首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF本地化-使用resx

WPF本地化-使用resx
EN

Code Review用户
提问于 2013-06-03 14:13:19
回答 2查看 7.5K关注 0票数 5

我有一个小的WPF应用程序,我没有完全本地化,但也没有硬编码资源。我知道WPF没有为此使用.resx文件,但我将资源字符串公开为视图控件绑定到的公共ViewModel属性:

代码语言:javascript
复制
using resx = MyApp.Properties.Resources;
...

public string InterferingProcessesText { get { return resx.InterferingProcessesText; } }
public string SettingsText { get { return resx.SettingsText; } }
public string ExecuteInstallerCommandText { get { return resx.ExecuteInstallerCommandText; } }
public string SaveSettingsCommandText { get { return resx.SaveSettingsCommandText; } }
public string RefreshProcessesCommandText { get { return resx.RefreshProcessesCommandText; } }
public string KillInterferingProcessesCommandText { get { return resx.KillInterferingProcessesCommandText; } }

然后,如果我决定翻译字符串,我就可以复制我的.resx文件并用一个区域性后缀重命名它,就像我在WinForms或任何其他Web应用程序中所做的那样。

我知道我应该把x:Uid放在我的XAML上,并像WPF那样本地化我的应用程序,但是这到底有多糟糕,为什么呢?

是的,它将我的ViewModels中的公共字符串属性(#region )弄得乱七八糟。但是,它是否违反了MVVM的一些原则,它会来咬我的*?

EN

回答 2

Code Review用户

回答已采纳

发布于 2013-06-04 04:31:13

在WPF中实现本地化时,我也有同样的想法,并得出结论:.resx文件很好。我得出这个结论,是因为替代方案很快变得比我费心的更复杂,而基于RESX的解决方案对我来说是可行的。

因此,在我的各种View.xaml文件中,我使用这样的绑定;

代码语言:javascript
复制
<MenuItem Name="Exit" Header="{x:Static Resources:Strings.MENU_HEADER_EXIT}" />

更改语言只是创建RESX条目特定于语言的版本的问题。(http://msdn.microsoft.com/en-us/library/vstudio/aa992030%28v=vs.100%29.aspx)。

现在,关于您的实际问题,我不认为这类数据属于ViewModel。没有对这些字符串进行“建模”;它们只是标签文本,因此是纯视图的数据。如果我们遵循您的上述建议,得出一个过于热心的结论,我们不妨添加ViewModel属性(和绑定);

代码语言:javascript
复制
Font InterferingProcessesFont { get { return FontFamily.Arial; }
Color InterferingProcessesFontColor { get { return Color.Black; }
FontStyle InterferingProcessesFontStyle { get { return FontStyle.Normal; }
. 
etc.
. 

在我看来,像这样的本地化标签是固定的显示设置,在应用程序的生命周期内是不会改变的,而且在大多数情况下,对于特定的用户来说是永远不会改变的。为什么ViewModel与静态文本杂乱无章?

票数 7
EN

Code Review用户

发布于 2018-07-12 07:01:43

RESX文件非常好!如果您为visual studio安装了Microsoft MAT (多语言应用程序工具包)(免费扩展),它简化了翻译的管理;

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/26928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档