2011-07-21 9 views
3

英語版のWindows版があり、現在はこれをデバッグできませんが、私は2つの言語のアプリケーションをローカライズしています。私は、次のコードは、アプリケーションのコンストラクタで十分なはずです理解して何からSilverlightのローカリゼーション - Windowsのcultureをオーバーライドする方法

  if (Language == Language.Russian) { 
       Thread.CurrentThread.CurrentCulture = RUSSIAN_CULTURE; 
       Thread.CurrentThread.CurrentUICulture = RUSSIAN_CULTURE; 
      } 
      else { 
       Thread.CurrentThread.CurrentCulture = ENGLISH_CULTURE; 
       Thread.CurrentThread.CurrentUICulture = ENGLISH_CULTURE; 
      } 

文化オブジェクトは、正しい文化(RU-RU、EN-US)です。

しかし、アプリケーションがロシア語のウィンドウで実行されるとき、ifは無視され、ロシア語の文字列のみが使用されます。

言語の変更は、私のマシン上で完全に正しい動作することに注意してください(Windowsのエン)

+0

時には、現在のスレッドでのみlangaugeを設定するだけでは不十分な場合があります。一部のコントロール(別名DataGrid)はこの値を無視します。 UserControlsのLanguageプロパティも同様に設定する必要があります。this.Language = System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentCulture.Name); – Jehof

+0

アプリケーションの一部がrusだった場合、他のeng。それは問題になる可能性があります。しかし、TextBlockのような単純なコントロールは、Thread.CultureInfoを尊重する必要があります。アプリがru windowsで実行されたときに英語で何かを表示するコントロールの例はありません。 –

答えて

0

私は特定の文化資源EN新しいが追加されているし、それが問題を解決しました。 しかし、今は英語のリソースが重複しています。デフォルトでは&と同じですが、en-US固有のリソースに入ります。私はそのような重複を取り除く方法がなければならないと確信しています。

0

私はジェフリヒターの本 "のC#を経由してCLR" でこれを読んで:

(CurrentUICultureの程度)

既定でスレッドを作成すると、このスレッドプロパティは CulterInfoオブジェクトに設定されます。このオブジェクトは、Win32を使用してアプリケーションが実行されているWindows バージョンの言語を識別します。 GetUserDefaultUILanguage 関数。多言語 ユーザーインターフェイス(MUI)バージョンのWindowsを実行している場合は、 の[地域と言語のオプション]コントロールパネルの設定を使用してこれを設定できます。非MUI バージョンのWindowsでは、言語はローカライズされたOSの バージョン(またはインストールされている言語パック)によって決定され、 言語は変更できません。

+0

ive C#でCLRを読んでいますが、これは私の問題や銀色のローカリゼーションに関連しているとは思われません。 –

0

私は私のSilverlightのビューのコンストラクタではなく、アプリケーションのコンストラクタでこれを使用します。

//seting language for currency and datetime 
    string sDefaultLocalization = "ru-RU"; 
    Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(sDefaultLocalization); 
    this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name); 
+0

言語はもっと関連しています中国語、日本語、韓国語のテキストを表示する場合、Silverlightはどの言語を表示しているかを知る必要があります。なぜなら、同じUnicode文字が言語によって異なって表示されるからです。私は信じている。それ以外は、同じコードを設定してThread.CurrentThread.CurrentCultureが動作するはずです。 –

関連する問題