如何使用MVVM模式在Wpf应用程序上实现本地化?

本文关键字:程序上 应用程序 实现 本地化 应用 Wpf 何使用 MVVM 模式 | 更新日期: 2023-09-27 18:10:00

我正在使用Devexpress工具开发wpf应用程序,并遵循MVVM模式。

我用Locbaml工具对它应用了本地化,它工作得很好,但只是为了视图。

在这个应用程序中,我正在设置网格行验证错误,也弹出一些消息框从视图模型,但LocBaml不是寻找这些错误消息和消息框消息在其他语言的转换有帮助。我怎样才能做到这一点呢?

如何使用MVVM模式在Wpf应用程序上实现本地化?

LocBaml仅从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。翻译("resourceKey"、"价值名称")

你可以看看我写的一些软件:

http://tap-source.com/?p=232

相关文章: