11

MVVMパターンを使用してWPFアプリケーションをローカライズするにはどうすればよいですか?私は本当にそれを「正しい」方法でやりたいと思っています。

私の現在のアプローチは、.resxリソースファイルを使用してアプリケーションをローカライズすることです。

ソリューションエクスプローラーVS2012

xamlコードにそれらを含めました

xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages"

次のようにアクセスします。

        <Button x:Name="BtnGenerate" 
                Content="{x:Static localization:localization.ButtonGenerate}"/>

私の質問:

  1. それを行うためのより良い方法はありますか?
  2. さまざまな言語をテストするにはどうすればよいですか(さまざまな言語設定でアプリケーションをロードします)?
  3. 実行時に言語を変更することは可能ですか?

回答:

質問1:

質問2:(ありがとう、stijn)

public MainWindow()
{
    // Debug Settings
    localization.Culture = CultureInfo.GetCultureInfo("en-US");
    // localization.Culture = CultureInfo.GetCultureInfo("de-DE");
    this.InitializeComponent();
}

質問3:(ありがとう、stijn)

実際には、ウィンドウ全体を再描画する必要があります。

4

1 に答える 1

4

私に関する限り、これはそれを行うための適切な方法です。言語を切り替えるには、ローカリゼーションクラスで使用されるカルチャを変更します。

localization.Culture = CultureInfo.GetCultureInfo( "de-DE" );

すべての文字列は実行時にフェッチされるため(生成されたDesigner.csファイルのすべての呼び出しは次のようResourceManager.GetString( "SomeString", resourceCulture );になりresourceCulture、上記の呼び出しによって設定されます。これは実行時に取得するものに影響します。ただし、xaml内からメニュー項目などの値を使用するとします。 、これを有効にするには、メニュー全体を再構築する必要があります。

于 2013-03-07T10:58:34.143 に答える