.NETではCultureInfo
、System.Globalization
名前空間にクラスがあります。これには、CultureInfo
タイプの値を返す2つの類似したプロパティがCurrentCulture
ありCurrentUICulture
ます。
それらの違いは何ですか?
いつ、どのような理由で使用すべきですか?
CurrentCulture
「en-GB」ですがCurrentUICulture
、「en-US」です。
.NETではCultureInfo
、System.Globalization
名前空間にクラスがあります。これには、CultureInfo
タイプの値を返す2つの類似したプロパティがCurrentCulture
ありCurrentUICulture
ます。
それらの違いは何ですか?
いつ、どのような理由で使用すべきですか?
CurrentCulture
「en-GB」ですがCurrentUICulture
、「en-US」です。
回答:
CurrentCulture
システムのデフォルトのユーザーロケールの.NET表現です。これは、デフォルトの数値や日付のフォーマットなどを制御します。
CurrentUICulture
Windows 2000で導入されたデフォルトのユーザーインターフェイス言語を指します。これは主に、アプリのUIローカリゼーション/翻訳部分に関するものです。
システムが持つように構成されている地域オプションは、.NETアプリの「現在の」値になります。
多くの場合、それらは両方とも同じです。しかし、私のシステムでは、それらは異なります。私は数字と日付をドイツ語形式でCurrentCulture
好むので、ドイツ語になりますが、すべてのアプリケーションも英語で好むので、CurrentUICulture
英語になります。
トピックに関する素晴らしい記事があります:すべてを並べ替える:CurrentCultureとCurrentUICultureの両方がある理由
D
en-US
ru-RU
これは、どちらを使用するかを覚えておくための簡単なトリックです。
(date, currency, double).tostring = CurrentCulture
resource.fr-CA.resx file = currentUICulture
仲間のユーザーが行う素晴らしい説明に加えて、違いを生む良い方法であり、Webアプリケーション開発における重要な側面は次のとおりです。
CurrentCulture
Webサーバーのセットアップを表します。たとえば、ASP.NET Webアプリケーションがドイツでホストされている場合、の値はCutlureInfo.CurrentCulture
おそらくになりますde-DE
。したがって、タイプのデフォルトの.ToString()
フォーマットはIFormattable
、デフォルトのドイツ語のフォーマット、またはサーバーOSでデフォルトとして設定されているものを使用します。
CurrentUICulture
ユーザーエージェントから取得でき、Webサイトに接続するクライアントのユーザーインターフェイスカルチャを表す場合があります。あなたがロシアからそのウェブサイトをロードした場合、ローカルの設定がロシア語を使用するように設定されており、ユーザーエージェントはサーバー(オペラとIEがないことを確認ChromeとFirefoxの場合、これを自動的に行う)にロケール設定を送信し、CurrenUICulture
希望を表すru-RU
。これにより、ResourceManagerを介して取得されるローカライズされた文字列やASP.NET aspx / ascxファイルのローカリゼーション式などのリソースがロシア語になります(翻訳が利用可能な場合)。
違い:
CurrentCulture
CurrentUICulture
言語/翻訳に伴う日付と通貨のフォーマット用 です。ResourceManager
文化別にリソースを検索するために使用されます。CurrentCulture
のクラスはでありSystem.Globalization
ながら、 CurrentUICulture
から来ていますSystem.Threading
。CurrentCulture
CurrentUICulture
すべてのリクエストで設定する必要がある間、セッション内の異なるリクエスト間で永続化されます。類似度:
どちらもSystem.Globalization.CultureInfo
インスタンスです。
CurrentUICulture
関係なく、英語のマシンでは常にen-USにCurrentCulture
なります。