[英]How should I Implement Localization on Wpf Application using MVVM pattern?
我正在使用Devexpress工具和跟随MVVM模式的wpf应用程序。
我已经使用Locbaml工具在其上应用了本地化,它工作得非常好,但仅适用于View。
在这个应用程序中我设置网格行Vlidation错误,并从视图模型弹出一些MessageBoxes但LocBaml看起来没有帮助转换这些错误消息和消息框消息在其他语言。 我怎么能做到这一点?
LocBaml只从baml中提取东西,baml是你的xaml文件的编译形式。 xaml中未定义的任何内容(例如,代码隐藏中定义的字符串)将永远不会被它看到。 我知道的唯一解决方法是定义您可能希望在xaml中本地化为字符串资源的所有字符串。 这些可以很容易地从代码隐藏中引用,因此它没有声音那么糟糕。 完全动态生成的字符串将不可本地化,但通过某些工作,您可以从xaml资源中定义的片段构建它们。
直接从ViewModel获取消息框是错误的。 相反,您应该引发事件并让视图执行UI。 否则你无法对ViewModel进行单元测试,这是MVVM模式的主要目标之一。
如果您使用.resx文件来管理翻译,您只需让它们生成代码(在.resx屏幕的组合框中使用Access Modifier:Public),然后让VM直接将消息发送到视图。
这样,代码生成的资源文件的基础功能将返回所需文本的翻译版本。
http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/10/30/wpf-localization-on-the-fly-language-selection.aspx检查一下。 您可以通过从代码中调用translate方法从VM发送本地化文本。 例如
LanguageDictionary.Current.Translate(“resourceKey”,“value Name”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.