如何使用 MVVM 模式本地化 WPF 应用程序?我真的很想以“正确”的方式去做。
我当前的方法是使用 .resx 资源文件来本地化我的应用程序。
我将它们包含在我的 xaml 代码中
xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages"
并像这样访问它们:
<Button x:Name="BtnGenerate"
Content="{x:Static localization:localization.ButtonGenerate}"/>
我的问题:
-
有更好的方法吗?
- 我如何测试不同的语言(加载具有不同语言设置的应用程序)?
- 是否可以在运行时更改语言?
Answers:
问题一:
问题2:(谢谢stijn)
public MainWindow()
{
// Debug Settings
localization.Culture = CultureInfo.GetCultureInfo("en-US");
// localization.Culture = CultureInfo.GetCultureInfo("de-DE");
this.InitializeComponent();
}
问题3:(谢谢stijn)
其实不然,需要重绘整个窗口。
就我而言,这是正确的做法。
要切换语言,请更改本地化类使用的区域性:
localization.Culture = CultureInfo.GetCultureInfo( "de-DE" );
由于所有字符串都是在运行时获取的(生成的 Designer.cs 文件中的所有调用看起来像ResourceManager.GetString( "SomeString", resourceCulture );
and resourceCulture
是上面调用设置的内容,这会影响您在运行时获得的内容。但是,假设您使用 xaml 中的菜单项等中的值,则必须在其生效之前重建整个菜单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)