如何在XAML中显示本地化文本



我有一个WPF应用程序,需要对其进行西班牙语本地化。我读过MSDN文档,感到很困惑。这很复杂,因为我们公司有一套三个程序可以一起工作(一个是Windows服务,一个是web应用程序,第三个是我的WPF应用程序),我们决定构建一个资源DLL,其中包含所有三种产品的可本地化字符串。

所以字符串在资源DLL中,称之为resources.DLL。现在,原始英文字符串在XAML中进行硬编码。我已经为表单ControlType_StringName的每个字符串创建了资源ID。多个控件使用的字符串被命名为Common_StringName

如何对XAML进行编码以显示正确的字符串?例如,我有一个"关于"框。它使用一个名为"About_Copyright"的字符串。在"关于"框中,有一个显示此字符串的TextBlock。我在Text属性的值中放入了什么?

<TextBlock x:Uid="TextBlock_4" FontSize="18"
           FontWeight="Bold"
           Foreground="{DynamicResource TextForeground}"
           Grid.Row="5"
           HorizontalAlignment="Center"
           Margin="5"
           Text="Copyright © 2012, 2013, Elsag North America, Inc." />

完成后,Text属性中应该有一个引用资源中的"AboutBox_Copyright"字符串的引用。

在我的程序资源的资源DLL中有一个单独的静态类,名为CarSystem,因此后面的代码会将字符串称为"CarSystem.AboutBox_Copyright".

将对资源dll的引用添加为

xmlns:res="clr-namespace:LocalizationDll.Properties"

并将其作为在您的UI中使用

Text="{x:Static res:Resources.AboutBox_Copyright}"

注意,您必须将您的UI文化设置为

System.Threading.Thread.CurrentThread.CurrentUICulture = 
            new System.Globalization.CultureInfo("es-ES");

最新更新