我正在尝试实现一个提供多语言支持的界面。为简单起见,我将在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");
}
}
答案 0 :(得分:2)
Silverlight中的本地化通常使用Resource Dictionaries及其在地区和文化方面的等级组织来实现。运行时解释基于CultureInfo.CurrentUICulture Property的那些,但可以修改此行为以满足您的需求。
在here上查看起始点here和localisation。
答案 1 :(得分:0)
您可以使用Zeta resource editor之类的工具为您的默认语言和所有支持的语言创建(和编辑)资源。资源必须命名为strings.resx
,strings.en.resx
,strings.de.resx
a.s.o。
将这些资源添加到项目中时,资源管理器将使用正确的语言。然后,您可以从XAML绑定到字符串,或使用类ResourceManager从后面的代码中获取字符串。
答案 2 :(得分:0)
最简单的方法是为每种语言维护ResourceFiles,它会在绑定时根据当前语言自动更改文本。