1

MSDN の記事「方法: カスタム カルチャを作成する」で説明されている手順に従って、新しいカルチャを作成して登録しました。

var cib = new CultureAndRegionInfoBuilder(CultureName, CultureAndRegionModifiers.None);
cib.LoadDataFromCultureInfo(new CultureInfo("cs-CZ"));
cib.LoadDataFromRegionInfo(new RegionInfo("CZ"));
cib.CultureNativeName = CultureNativeName;
cib.CultureEnglishName = CultureNativeName;
cib.NumberFormat.NumberDecimalSeparator = separator
cib.Register();

すべてがうまく見えます。Windows の [地域と言語] ダイアログで新しいカルチャを確認できます。カルチャをアプリケーションにロードすることもできます。

コントロール パネルの [地域と言語] ダイアログで何かを直接変更すると (NumberDecimalSeparator はコンマ "," ではなくドット "." にする必要があるとします)、カルチャを取得しようとすると:

var ci = CultureInfo.GetCultureInfo(CultureName);
ci.ClearCachedData();
ci = CultureInfo.GetCultureInfo(CultureName); 

登録したのと同じ文化情報をまだ持っています。取得した CultureInfo オブジェクトに手動での変更が射影されません。

それは適切な行動ですか、それとも私は何か間違ったことをしていますか?

編集:

もう一度考えてみると、コントロール パネルでカルチャ情報を変更しているユーザーとは異なるユーザー アカウントで IIS でアプリケーションを実行しているのは明らかに問題です。

正しい質問は、すべてのユーザー (または少なくとも IIS ユーザーと一部の管理者ユーザー) に共通するカルチャを登録するにはどうすればよいですか?

私がこれをしたい理由:

  1. アプリケーションで使用されるフォーマットをカスタマイズできるようにしたい。
  2. Web アプリケーション内のコントロール パネルにあるものと同等の GUI を作成したくありません。
  3. 管理者は、コントロール パネルでアプリケーションのフォーマットを簡単に設定できます。
4

0 に答える 0