2009-08-15 11 views
10

私のアプリケーションの中にはバイトコンバージョンと私の計算の問題があります。私は窓にイタリア文化の設定をしている人にそれを寄付することができました。ですから、私の質問は、アプリケーションを実行しているどのコンピュータでも "en-US"のための最善の方法は何でしょうか。私は以下のコードサンプルを持っていますが、私が使用するスレッドがそれを継承するかどうかはわかりません。アプリケーション全体のローカリゼーションカルチャをen-USに強制するにはどうすればいいですか

[STAThread] 
static void Main() 
{ 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); 
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 

    ... 
} 
+0

これは、「いくつかのバイトコンバージョンで問題が発生しています。」は、カルチャの設定とは関係がありません。問題はコンバージョンにあります。非米国系の文化が選択されているわけではありません。 –

答えて

9

あなたのコードは、現在のスレッドの文化を設定しますが、この文化を持っていません作成された新しいスレッドが「継承しました」。自分で必要な文化を設定する必要があります。 (私は、新しいスレッドがインストールされたWindowsの文化を使用して作成されることを信じて、私はそれで間違って証明するために準備だ。)

これは、この記事で回答されています Is there a way of setting culture for a whole application? All current threads and new threads?

は個人的に、私が見つけますこの動作は厄介ですが、それはそうです。

+1

実際それは良い意味合いがあります。あるサイトにアクセスしている複数のユーザーが、特定の時点で別のカルチャをアクティブにできるASP.NETについて考えてみましょう。文化が一致しない場合のフォールバックがある場合は、ベースラインを開始する必要があります。 –

+0

@Rick:それは公正な点です。私はASP.NETでの経験がないので、これまでに考えていたことではありません。 – Andy

12

あなたが説明する問題は、理由がInvariantCultureであることです。アプリケーションのカルチャを変更するのではなく、不変のカルチャでシーンのデータ操作/永続化を行い、ユーザーのカルチャーが値のレンダリング方法を決定できるようにする必要があります。

関連する問題