.NETのCultureInfoのCurrentCultureプロパティとCurrentUICultureプロパティの違いは何ですか?
-
11-07-2019 - |
質問
.NETには、 System.Globalization
名前空間に CultureInfo
クラスがあります。 CultureInfo
型の値を返す2つの類似したプロパティがあります: CurrentCulture
および CurrentUICulture
。
それらの違いは何ですか?
いつどのような理由で使用すべきですか?
解決
CurrentCulture
は、システムのデフォルトのユーザーロケールの.NET表現です。これは、デフォルトの数値と日付のフォーマットなどを制御します。
CurrentUICulture
は、Windows 2000で導入されたデフォルトのユーザーインターフェイス言語を指します。これは主に、アプリのUIローカリゼーション/翻訳部分に関するものです。
システムが持つように構成されている地域のオプションはすべて、「現在」です。 .NETアプリの値。
多くの場合、両者は同じです。しかし、私のシステムではそれらは異なります:私はドイツ語形式の数字と日付を好むので、 CurrentCulture
はドイツ語になりますが、英語のすべてのアプリケーションも好むので、 CurrentUICulture
は英語です。
トピックに関する素晴らしい記事があります:すべてを整理する:なぜ私たちはCurrentCultureとCurrentUICultureの両方がある
他のヒント
これは、どちらを使用するかを覚えるために使用する簡単なトリックです。
(date, currency, double).tostring = CurrentCulture
resource.fr-CA.resx file = currentUICulture
違い:
-
CurrentCulture
CurrentUICulture
は言語/翻訳に対応しています。ResourceManager
によって使用されます。 a>文化ごとにリソースを検索します。 -
CurrentCulture
のネームスペースa>クラスはSystem.Globalization
にあり、CurrentUICulture
は、System.Threading
に由来します。 -
CurrentCulture
CurrentUICulture
はすべてのリクエストで設定する必要があります。
好感度:
両方とも System.Globalization.CultureInfo
インスタンス。
仲間のユーザーによる素晴らしい説明に加えて違いを生む良い方法であり、Webアプリケーション開発の重要な側面は次のとおりです。
-
CurrentCulture
は、Webサーバーのセットアップを表します。たとえば、ASP.NET Webアプリケーションがドイツでホストされている場合、CutlureInfo.CurrentCulture
の値はおそらくde-DE
になります。したがって、IFormattable
タイプのデフォルトの.ToString()
フォーマットは、デフォルトのドイツ語フォーマット、またはサーバーOSでデフォルトとして設定されているフォーマットを使用します。 -
CurrentUICulture
は、ユーザーエージェントからキャプチャでき、Webサイトに接続するクライアントのユーザーインターフェイスカルチャを表します。たとえば、ロシアからそのWebサイトをロードすると、ローカル設定はロシア語を使用するように設定され、ユーザーエージェントはロケール設定をサーバーに送信します(OperaとIEはこれを自動的に行います。ChromeとFireFoxについては不明です)。 code> CurrenUICulture はru-RU
を表します。これにより、ResourceManager経由で取得したローカライズされた文字列やASP.NET aspx / ascxファイルのローカライズ式などのリソースがロシア語になります(翻訳が利用可能な場合)。
CurrentUICulture
は 'en'(ニュートラルカルチャ)などの国以外のロケールをサポートしますが、 CurrentCulture
は 'enなどの国固有のロケールのみをサポートすることに注意してください-GB '。 CurrentCulture
をニュートラルカルチャに設定すると、 ArgumentException
がスローされます。
これは、日付や通貨などの形式が国自体により強くリンクされているためと思われますが、表示される言語は国間で互換性があることがよくあります。