多语种wpf应用程序

我有一个WPF应用程序(英文),我想让用户选择不同的语言。 我已经阅读了一些在运行时应用程序中更改语言的可能性,但我只想在安装时选择一种语言,而不是更改它。

您认为最快最容易的方法是开发不同版本的程序(仅更改文本语言)并让用户在安装过程中选择其中一个版本吗? 可能重复代码只更改文本框或标签不是很优雅,但请注意我的应用程序用英语完成,我不需要在运行时更改语言。

我认为Aghilas提出的解决方案很好; 但是你可以在步骤3中使用StaticResource而不是使用DynamicResource ,在你的情况下不需要DynamicResource ,因为你不打算在应用程序运行时使用语言。

另请查看这些文章,详细了解如何在WPF中使用Resx文件进行本地化 –

使用ResX文件本地化WPF应用程序

WPF本地化

WPF本地化指南 – 白皮书

您可以按照以下步骤操作:

  1. 创建资源文件

    将此文件StringResources.xaml添加到Resources目录。 这是一个例子:

      Close  

    您可以创建多个文件,每种语言一个。

  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. 使用资源,像这样 –

      

只是为了改进@ AghilasYakoub的正确答案,我想我需要指出,除了他所说的以外,应该将以下代码添加到App.xaml文件中:

         

如果要使用RESX文件而不是资源字典,可以使用XAML中的静态引用轻松完成。

   

Resource文件夹中是MainWindow.resxMainWindow.de.resx等,每个文件都包含一个带有翻译的密钥MyTestKey