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

时间:2013-12-02 17:52:37

标签: c# .net wpf xaml localization

我有一个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”字符串。

在我的程序资源名为CarSystem的资源DLL中有一个单独的静态类,因此代码隐藏将字符串称为“CarSystem.AboutBox_Copyright”。

1 个答案:

答案 0 :(得分:4)

将对资源dll的引用添加为

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

并在您的用户界面中将其用作

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

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

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