项目是开始没有考虑到做全球化的。不知道为什么后来有了这个需求,我接手过来之后,时间也就是3,5天吧。说多不算多,说少也不少了。简单的看了下,一共是有大概50来个页面,都带有code behind的那种。很多都是控件里面有Text属性,有的干脆也没有,直接在两个tag之间的随便一写,反而很不好弄。还有就是code behind对某个控件的TExt进行赋值,总之东西多而且需要非常细致的工作。下面分类说几种处理的方式:
- 全球化语言的加载。
在config文件中加入一个key项,比如我的叫做defaultLanguage,Value是文化的形式:
建立Global.asax文件,在如下的函数中,读取defaultLanguage中的内容。
{
string name = string.Empty;
name = ConfigurationSettings.AppSettings["defaultLanguage"];
System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo(name);
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
}
- 普通页面的处理方式
1.如果是单纯的没有任何asp.net的控件中,加入到asp.net控件的text属性中去。
2.如果页面中有了控件,但是没有写在Text属性中的,写入到属性中去。
3.切换页面到Design状态下,然后在Tools--》Generate LocalResource,生成resource文件。
4.如上的页面控件中会自动生成一些新的代码。
5.而在页面对应的resource文件中,ltABCResource1.Text属性,会对应abc,接下来的工作就是删除页面中所有控件的Text=""属性,这样的话,页面加载的时候会自动的找到它所应该对应的Text值。
- 特殊页面和Codebehind页面的处理
一般对于多次出现的一些信息。或者公共的信息。再或者我都放在Globalresource中了。比如我的Global文件类名叫做Label,其中存在一个UserName的,其Value是"abc",那么,在前台页面或者后台页面都可以直接访问到。分别是:
- 时间或者金钱的处理。(¥$)
起初对于日期是硬编码的,那么对于日期时间的显示写成dd/MM/yyyy,到了其他语言或者国家的话,就会出现了问题了。必须和当前的文化相对才行。对于Money前面的那个符号也是需要当前的文化信息相对应的。