1

次のコードを検討してください。

new CultureInfo("sv").TextInfo.CultureName

これは「sv-SE」を返します。しかし、なぜ?「sv-FI」やその他の文化ではないのはなぜですか? 地域はどのように決まるのですか?

CultureNameのドキュメントには、

CultureInfo.Name の値がニュートラル カルチャの場合、対応する CultureName の値は、同じ言語を使用する任意の特定のカルチャです。たとえば、Name プロパティは英語のニュートラル カルチャに対して "en" を返しますが、対応する CultureName プロパティは英語 (米国) カルチャに対して "en-US" を返す場合があります。

地域がどのように選ばれたかは明らかではありません。"en" の場合、選択された地域は "US" であり、カルチャは en-US になります。

これは、言語の「プライマリ」リージョンを自動的に取得する気の利いた方法のように思えますが、それは本当に何をするのでしょうか? それとも、sv-SE と en-US が選択されるのは完全にランダムですか? 「かもしれない」という言葉は、信頼するには曖昧すぎるように思えます。

4

2 に答える 2

1

http://msdn.microsoft.com/en-us/library/ee825488(v=cs.20).aspxをご覧ください。

.Net のカルチャには、最後の 10 ビットが言語を定義し、他のビットが地域を定義する ID があります。

英語の場合、言語 ID は 9 で、en_US の ID は 0x0409 - en_GB の ID は 0x0809 です。

したがって、リージョンを指定しない場合は、ID に従って最初の値が取得されるだけだと思います

CultureID = LanguageID + 0x0400

同じことがsv-SEとsv-FIにも当てはまります

于 2013-06-28T15:04:57.937 に答える
1

言語ニュートラルの基になるデータは、ニュートラル言語で System.Globalization.Cultureinfo.CreateSpecificCulture を呼び出すことで特定できる特定の言語にマップされます。理由については、話者が最も多い地域にマッピングしようとする試みがいくつかありますが、言語の初期サポートに関係している可能性もあります。最初にサポートされた方言が最終的にプライマリになります。いずれにせよ、一度確立すると変わるものではありません。言語の主要な地域を決定する必要があるのはなぜですか?

于 2013-06-28T22:10:35.140 に答える