1. 概述
该文章介绍了一种国际化和本地化一个WPF工程的方法,并给出了一个Sample。该解决方法是根据SDK Documents以及CodeProject.com网站的文章总结出来的。
WPF程序会自动根据OS的版本选择资源程序集,如果本地程序集不在,则使用默认程序集资源。可以通过代码的形式让WPF程序使用某一个版本的资源。本文介绍的方法不需要再对工程进行编译,可以直接获得资源集。
该方法中需要用到的几个工具:
-
MSBuild.exe ( Microsoft build engine)
-
LocBaml.exe
-
Resgen.exe ( Resource File Generator)
-
Al.exe ( Assembly Linker)
2. 国际化
2.1 字符串处理
在WPF工程中非XAML的Code中,通常有两种类型的字符串:一种是显示给用户的需要本地化的,一种是程序内部使用的不需要本地化的。对于这两种字符串,我们可以采取下述措施进行:
2.2 国际化
国际化是可以在多种语言区域运行的应用程序的设计与开发。
步骤1:创建一个WPF程序
使用Properties/Resources.resx来保存需要本地化的字符串:
使用NonLocalizableString.cs来保存不需要本地化的字符串:
步骤2:创建下图所示的UI
步骤3:创建ShowMsg按钮的点击事件函数
步骤4:生成XAML文件中控件的Uid
打开SDK的命令行工具
使用如下命令生成并检查Uid:
Msbuild /t:updateuid LocalizationTest.csproj // generate Uid
Msbuild /t:checkuid LocalizationTest.csproj // check Uid
步骤5:Build工程,一个可以进行本地化的工程就建立成功了。
3. 本地化
应用程序要支持某特定的语言,就需要把程序资源翻译成本地版本,这个翻译的过程就是本地化。对于WPF工
程的本地化需要下列工具:
1. LocBaml.exe
2. Resgen.exe
3. Al.exe
另外还需要一些必要的辅助文件:
Table 3-1 Essential files for localization
File name |
Location |
Comments |
LocalizationTest.exe |
bin/Release |
Main assembly to be used to abstract resource to be localized in XAML. |
LocalizationTest.g.resources |
obj/Release |
Generate binary resource file of XAML by using it. |
LocalizationTest.Properties.Resources.resources |
obj/Release |