382

.NETでは、名前空間にCultureInfoクラスがあります。System.Globalization2つの類似したプロパティがあり、どちらもCultureInfoタイプの値を返します:CurrentCultureCurrentUICulture

それらの違いは何ですか?

いつ、なぜどちらを使うべきですか?

4

5 に答える 5

369

CurrentCultureシステムのデフォルトのユーザーロケールの.NET表現です。これは、デフォルトの数値と日付のフォーマットなどを制御します。

CurrentUICultureは、デフォルトのユーザーインターフェイス言語、つまりWindows 2000で導入された設定を指します。これは主に、アプリのUIローカリゼーション/翻訳部分に関するものです。

システムが持つように構成されている地域オプションが何であれ、.NETアプリの「現在の」値になります。

多くの場合、それらは両方とも同じです。しかし、私のシステムでは、それらは異なります。私はドイツ語形式の番号と日付を好むので、ドイツCurrentCulture語になりますが、英語のすべてのアプリケーションも好むので、英語にCurrentUICultureなります。

このトピックに関する素晴らしい記事があります:すべてを整理する:CurrentCultureとCurrentUICultureの両方がある理由

于 2008-11-30T16:35:29.653 に答える
111

これは、どれを使用するかを覚えるために私が使用する簡単なトリックです。

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture
于 2010-09-02T12:23:48.953 に答える
19

仲間のユーザーによる親切な説明に加えて、違いを生む良い方法であり、Web アプリケーション開発の重要な側面は次のとおりです。

  • CurrentCultureWeb サーバーのセットアップを表します。たとえば、ASP.NET Web アプリケーションがドイツでホストされている場合、 の値はCutlureInfo.CurrentCultureおそらくde-DE. したがって、タイプのデフォルトの.ToString()書式設定でIFormattableは、デフォルトのドイツ語の書式設定、またはサーバー OS でデフォルトとして設定された書式設定が使用されます。

  • CurrentUICultureユーザー エージェントから取得でき、Web サイトに接続しているクライアントのユーザー インターフェイス カルチャを表す場合があります。たとえば、ロシアからその Web サイトを読み込む場合、ローカル設定はロシア語を使用するように設定されており、ユーザー エージェントはロケール設定をサーバーに送信します (Opera と IE はこれを自動的に行いますが、Chrome と FireFox についてはわかりません) CurrenUICulture、を表すru-RU。これにより、ResourceManager を介して取得されたローカライズされた文字列や ASP.NET aspx/ascx ファイルのローカライズ式などのリソースがロシア語になります (翻訳が利用可能な場合)。

于 2015-11-26T14:02:33.340 に答える
15

違い:

  1. CurrentCulture日付と通貨の書式設定用であり CurrentUICulture、言語/翻訳と一緒に使用します。ResourceManagerカルチャごとにリソースを検索するために使用されます。
  2. CurrentCultureclassの名前空間 は in ですがSystem.GlobalizationCurrentUICulturefrom から来ていSystem.Threadingます。
  3. CurrentCultureセッション内のさまざまなリクエスト間でCurrentUICulture保持されますが、リクエストごとに設定する必要があります。

類似度:

どちらもSystem.Globalization.CultureInfoインスタンスです。

于 2015-11-26T13:18:06.780 に答える
12

CurrentUICultureは'en' (ニュートラル カルチャ) などの国に固有でないロケールをサポートするのに対し、CurrentCultureは 'en-GB' などの国固有のロケールのみをサポートすることに注意してください。CurrentCultureニュートラル カルチャに設定すると、 ArgumentException.

これは、日付や通貨などの形式が国自体とより強く結びついているためだと思いますが、表示される言語は多くの場合、国間で互換性があります.

于 2016-05-12T13:52:19.330 に答える