【发布时间】:2011-06-27 21:08:05
【问题描述】:
我正在寻找一种非常简单的方法来让我的应用程序本地化为日语以及默认的英语。唯一的要求是我们能够以指定的语言启动它。我们使用的是笨重、复杂、容易出错的 LocBaml 东西,这让我们的构建过程变得异常困难。
我正在考虑将所有内容移回资源文件(Strings.resx、Strings.ja.resx)并仅进行静态绑定,如下所示:
<TextBlock Text="{x:Static resx:MyWindow.MessageText}" />
然后在启动时找出他们想要的语言并切换它从哪个资源中提取字符串:
public static void Main(string[] args)
{
if (args[0] == "-lang")
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(args[i + 1]);
}
App app = new App();
app.InitializeComponent();
app.Run();
}
这很简单,似乎唯一真正的缺点是我们无法在运行时切换,这不是我们想做的事情。我见过一些像这样的本地化扩展:
http://wpflocalization.codeplex.com/
http://www.wpftutorial.net/LocalizeMarkupExtension.html
它们提供更简洁的 Xaml 并且在设计时看起来更好一些,但除了允许您在运行时更改语言之外,我看不出任何功能差异。我在这里遗漏了什么,还是我们应该走简单的内置路线?总而言之,我们只有大约 100 个需要本地化的字符串。我认为这里最简单的路线是最好的,尤其是考虑到我们的应用程序相对简单。
【问题讨论】:
标签: c# wpf localization resx