开发步骤:
1、全球化的考虑:在软件设计的初始阶段就要考虑到多国语的问题。在代码中不要用硬编码,例如:标签文本,按钮文本,提示信息。还有字符串,日期格式,时间和货币格式都需要考虑。具体的使用可以参考 System.Globalization namespace. 以后可能还会写到关于这方面的文章。
2、分离:把code 与 resource 分开,resource作为satellite assembly。
3、翻译:对不同的资源文件进行本地化的翻译。
几个概念:
1、Culture: 分为Invariant Culture,Neutral Cultrue,Specific Culture
2、Thread.CurrrentCulture: 当前线程的Culture,如果没有指定,程序启动时会用window 安装时的region信息初始化。
3、Thread.CurrentUICulture: 当前线程的UICulture,如果没有指定,程序启动时会用windows当前的language初始化。
4、CurrentUICulture 和 CurrentCulture:
CurrentUICulture是和界面相关的Culture,例如:标签本文,提示信息等。与语言相关,可以指定为上述的三种Culture.
CurrentCulture是和格式相关的Culture,例如:日期格式,时间,货币,日历等。与region相关,可以指定为Invariant Culture & Sepcific Culture.
所以本地化可以分为两个方面,一个是纯文本信息,另一个是格式信息。在coding阶段都应该考虑,与一般的程序不用。
用到的namespace & class:
System.Globalization; System.Resources; ResourceManager; CultureInfo;
Sample:
1
CultureInfo culture
=
new
CultureInfo(
"
zh-CN
"
);
2
Thread.CurrentUICulture
=
culture;
3
Thread.CurrentCulture
=
culture;
4
ResourceManager rm
=
new
ResourceManager(
"
Resources
"
,resourcesAssembly);
5
string
name
=
rm.GetString(
"
lblName
"
);
6
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)