WPF应用程序的本地化

时间:2012-09-25 14:10:31

标签: c# wpf localization

我们正在开发一个支持多种语言的WPF应用程序。由于我们必须支持开发团队都不知道的某些语言,因此我们同意允许用户(管理员)输入这些语言的文本。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

您可以按照以下步骤操作

1创建资源文件

将此文件StringResources.xaml添加到Ressources目录。样品在这里:

<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>

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

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 login}"
   Grid.Row="3"
   Grid.Column="0" 
   Padding="10" />

答案 1 :(得分:2)

我在WPFLocalizationExtension

方面取得了很好的经验

它带有大量功能(例如,根据语言绑定到本地化的图像资源)和最好的:它是免费的。还有一些resx编辑工具,允许您加载和编辑您的resx本地化文件。