2012-02-10 2 views
2

私は.NET 3.5フレームワークを使ってWinFormsベースのアプリケーションを持っています。アプリケーションには、一部のリソースのローカライズされたバージョンがあります。CurrentCultureとCurrentUICultureは、明白なシステムカルチャ以外の値にデフォルト設定する原因は何ですか?

最初にデフォルトのカルチャとしてen-USとともにインストールされたWindows XPのコピーを実行しているマシンでアプリケーションを実行すると、デフォルトのカルチャがen-CAに設定されていると、CurrentCultureとCurrentUICultureの両方がデフォルトになりますen-USに。

どうしてですか?アプリケーションが現在のOSカルチャをデフォルトとして使用するように変更するにはどうすればよいですか?

+0

_ユーザでログインのデフォルト設定は何ですか? – Oded

+0

ログインしたユーザーのデフォルト設定(コントロールパネル/地域と言語オプション/地域オプション、コントロールパネル/地域と言語オプション/言語/詳細/既定の入力言語、コントロールパネル/地域と言語オプション/詳細/非Unicodeプログラムの言語)はすべてカナダ英語に設定されています。 –

+0

これらのプロパティを読むために使用するコードを教えてください。 –

答えて

3

ユーザーは、Windowsの設定で、それ自体が彼女のお気に入りの言語に言及したことがない:彼女は、コントロールパネルの彼女の文化を設定し、そのよう英語(カナダ)を別名エン-CA。この選択はThread.Cultureプロパティに反映されます。これは、Windows(日時の形式と名前、通貨の名前、通貨の名前など)、通貨などの表示と書式設定の方法を決定するために使用されます。

その他の設定は、Windows (ほとんどの場合英語(米国))。これはThread.CurrentUICultureに反映されます。 GUI(メニュー、ボタン、ヘルプなど)の言語を反映しているので、この選択肢の選択肢は少なくなります。例えばen-CA CurrentUultureなどはありません。

注:Vista +およびXP-MUIでは、追加のGUI言語をインストールして、各ユーザーアカウントで使用する言語を設定できます。これはCurrentUICultureに反映されています。

よくある誤解は、文化がユーザーの好きな言語を判断するために使用されるべきだと考えることです。 CurrentUICultureに頼る方が良いです。私の場合、Windowsは英語で、ユーザーの好み(Culture)はfr-BE(フランス語 - ベルギー)です。あなたのUIをフランス語で表示することを考えてはいけません。目的に合わせてWindowsを英語でインストールしました。フランス語ではなく、英語でネイティブUIを使用したいと思います。私の選択の背後にある理由は疑わしいですが、これは無関係です。私の決定のみが関連しています。

つまり、私は2012年5月2日を5月2日ではなく2012年2月5日と読んでいます。だから、fr-BEは私のロケール/文化です。

FWIW、非Unicodeプログラムの言語は、Unicode以外のプログラムで使用されるデフォルトのコードページ(Win32 NLSのCP_ACP)を示します。 .NETアプリはUnicodeなので、これはあなたのアプリには影響しません。

デフォルトの入力言語によって、デフォルトのキーボードレイアウトが決まります。これはどちらも文化の設定ではありません。

文化特性に影響を与える設定はこの1つである:

XP Regional Settings

+0

OK、私はどこかで何かを見逃してしまいました。私の仮想マシンにインストールされているXPのバージョンでは、コントロールパネル/地域と言語設定/ ...の言語をいくつかの言語オプションに変更できます。あなたの回答はこれに当てはまらないことを示唆していますが、代わりにあなたが優先顧客を取得するために何をしなければなりませんか?言語を教えてください。 –

+0

私はそれに応じて答えを書き換えました。 –

+0

優れています。ありがとうございました(副産物として、正しくコード化されていることを示唆しています...それをテストしようとしています。 、疑わしい。) –

関連する問題