Ste*_*man 13 c# wpf localization resx
我正在寻找一种简单的方法来将我的应用程序本地化为日语以及默认的英语.唯一的要求是我们能够以指定的语言启动它.我们使用的是LocBaml的东西,这些东西很笨重,很复杂,容易出错,并且使我们的构建过程非常困难.
我正在考虑将所有内容移回资源文件(Strings.resx,Strings.ja.resx)并只执行静态绑定,如下所示:
<TextBlock Text="{x:Static resx:MyWindow.MessageText}" />
Run Code Online (Sandbox Code Playgroud)
然后在发布时找出他们想要的语言并切换它从哪个资源中提取字符串:
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();
}
Run Code Online (Sandbox Code Playgroud)
这很简单,似乎唯一真正的缺点是我们无法在运行时切换,这不是我们想要做的事情.我看过一些像这样的本地化扩展:
http://wpflocalization.codeplex.com/
http://www.wpftutorial.net/LocalizeMarkupExtension.html
它们提供了更清晰的Xaml,并且在设计时看起来更好一些,但除了允许您在运行时更改语言之外,我看不出任何功能差异.我在这里遗漏了什么,或者我们应该选择简单而内置的路线?总和我们只有~100个需要本地化的字符串.我认为这里最简单的路线是最好的,特别是考虑到我们应用程序的相对简单性.
我肯定会推荐resx路线.我刚刚完成了一个大型wpf应用程序的构建,该应用程序将以各种语言进行本地化(目前只是en_GB和it_IT,但很快就会推出更多的语言环境)并且它运行得很好.
需要考虑的一些缺点:
在我们方面,迄今为止resx方法的小幅缩减胜过了locBaml的缺点.
一个警告是我没有在完整的构建项目中使用locBaml方法.我和你处于同样的境地,不得不调查这两种方法.事后来看,这对我们来说绝对是正确的决定.
归档时间: |
|
查看次数: |
2665 次 |
最近记录: |