15

私は WPF アプリケーション (英語) を持っており、ユーザーがさまざまな言語を選択できるようにしたいと考えています。ランタイム アプリケーションで言語を変更する可能性をいくつか読みましたが、インストール時にのみ言語を選択し、決して変更したくありません。

それを行うための最も速くて簡単な方法は、プログラムの異なるバージョンを開発し (テキスト言語のみを変更する)、インストール中にユーザーがそれらのいずれかを選択できるようにすることだと思いますか?? おそらく、テキストボックスやラベルを変更するだけでコードを繰り返すのはあまりエレガントではありませんが、アプリケーションが英語で完成していて、実行時に言語を変更する必要がないことに注意してください。

4

4 に答える 4

37

次の手順を実行できます。

  1. リソース ファイルの作成

    このファイル StringResources.xaml を Resources ディレクトリに追加します。次に例を示します。

    <ResourceDictionary 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:system="clr-namespace:System;assembly=mscorlib">
    
         <system:String x:Key="close">Close</system:String>
    </ResourceDictionary>
    

    言語ごとに 1 つずつ、複数のファイルを作成できます。

  2. リソースの追加 (アプリケーションの起動時にこれを呼び出します)

    private void SetLanguageDictionary()
    {
         ResourceDictionary dict = new ResourceDictionary();
         switch (Thread.CurrentThread.CurrentCulture.ToString())
         { 
           case "en-US":
             dict.Source = new Uri("..\\Resources\\StringResources.xaml", UriKind.Relative);
             break;
           case "fr-CA":
             dict.Source = new Uri("..\\Resources\\StringResources.fr-CA.xaml", UriKind.Relative);
             break;
           default :
             dict.Source = new Uri("..\\Resources\\StringResources.xaml",UriKind.Relative);
             break;
         }
         this.Resources.MergedDictionaries.Add(dict);
    }
    
  3. このようにリソースを使用する -

    <Button      
       x:Name="btnLogin"
       Click="btnLogin_Click"
       Content="{DynamicResource close}"
       Grid.Row="3"
       Grid.Column="0" 
       Padding="10" />
    

ソース: https://www.codeproject.com/Articles/123460/Simplest-Way-to-Implement-Multilingual-WPF-Applica

于 2012-07-04T11:53:44.323 に答える
8

Aghilas が提案した解決策は良いと思います。ただし、ステップ 3 で使用するStaticResource代わりに使用できますが、アプリケーションの実行中に言語を変更するつもりはないため、この場合は必要ありません。DynamicResourceDynamicResource

また、WPF でのローカリゼーションに Resx ファイルを使用する方法について詳しく説明しているこれらの記事もご覧ください。

ResX ファイルを使用した WPF アプリケーションのローカライズ

WPF ローカリゼーション

WPF ローカリゼーション ガイダンス - ホワイトペーパー

于 2012-07-04T13:14:45.937 に答える
1

リソース ディクショナリの代わりに RESX ファイルを使用する場合は、XAML の静的参照を使用して簡単に実行できます。

<Window x:Class="MyApp.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:res="clr-namespace:MyApp.Resources">
    <Button Text="{x:Static res:MainWindow.MyTestKey}">
</Window>

Resourceフォルダには、などがありMainWindow.resx、すべてのファイルには翻訳付きMainWindow.de.resxのキーが含まれています。MyTestKey

于 2016-07-18T12:23:54.557 に答える