人们通常如何在Silverlight / XAML中实现多语言?

时间:2013-06-12 07:13:24

标签: c# .net silverlight xaml multilingual

我正在尝试实现一个提供多语言支持的界面。为简单起见,我将在XAML中提出一个例子:

<TextBlock Text="Type" Grid.Column="0" Grid.Row="0"  HorizontalAlignment="Right" />

我希望使该XAML代码的属性“Text”根据定义语言的变量和对的数组进行更改,这些对在给定键时返回该语言中的关联文本。

哪种方法最实用呢?现在,我通过以下方式为定义上述Textblock的每个文本块使用一个属性:

 <TextBlock Text="{Binding Type}" Grid.Column="0" Grid.Row="0"  HorizontalAlignment="Right" />

然后定义像这样的属性:

public string Type
{
     get
     {
        return Dictionary.Search("German", "Type");
     }
}

3 个答案:

答案 0 :(得分:2)

Silverlight中的本地化通常使用Resource Dictionaries及其在地区和文化方面的等级组织来实现。运行时解释基于CultureInfo.CurrentUICulture Property的那些,但可以修改此行为以满足您的需求。

here上查看起始点herelocalisation

答案 1 :(得分:0)

您可以使用Zeta resource editor之类的工具为您的默认语言和所有支持的语言创建(和编辑)资源。资源必须命名为strings.resxstrings.en.resxstrings.de.resx a.s.o。

将这些资源添加到项目中时,资源管理器将使用正确的语言。然后,您可以从XAML绑定到字符串,或使用类ResourceManager从后面的代码中获取字符串。

这里将详细介绍How to: Make XAML Content Localizable

答案 2 :(得分:0)

最简单的方法是为每种语言维护ResourceFiles,它会在绑定时根据当前语言自动更改文本。