最近,经常有朋友问ASP.NET如何实现国际化(多语言)支持方面的问题。前段时间我正好做过这样的一个组件,现本着“人人为我,我为人人”共享精神,发布于此。
其实ASP.NET已经集成对国际化和本地化的支持,但前些日子我正好在研究CS。所以没有采用微软内置的多语言支持方案,而是采用CS2.1项目的多语言支持方案为蓝本进行改写的。
此方案主要由多语言支持组件和站点工程交互来实现多语言支持的.
一.组件工程:
由ResourceManager对象负责资源(文本)读取的相关操作,由Ryu666Cache对象负责缓存资源文件数据(添加了缓存依赖).
二.站点工程:
主要有两职责:其一,在站点目录下的Languages目录下提供所有语言版本的资源文件(XML).其二,在Web.Config文件中appSettings节中提供站点的默认语言版本.
使用说明:
根据上述说明得知,其实运用此模块相当简单,针对以下几个方面说明:
1.资源读取: 在需要读取资源文本的地方调用ResourceManager.GetString("XXXX"),XXXX为资源文件中的resource元素的name属性.特别提醒:不一定在站点工程中读取资源,如果使用自定义控件时,本组件功效会更显著.
2.资源文件提供: 在站点工程中建立Languages目录,然后在其中的languages.xml声明所有支持的语言版本.然后建立以相应语言代码为名字的子目录,在其中再以自应的格式建立Resources.xml资源文件.
3.设置默认站点语言:在Web.config文件的appSettings节中声明.其值需要对应语言目录下languages.xml所声明的语言代码.
4.用户个性化语言选择:在需要切换用户语言的地方设置Session["userLanguage"]值便可.设置默认站点语言类似,所设的值需要在语言声明文件中被定义.
为演示方便现版本采用Session存放用户定制的语言版本,若用于产品化时建议结合ASP.NET 2.0的Profile管理用户的个性化语言版本.
因该组件不是产品,功能也不能算是完备,只作为共享用途.各位可以在此基础上继续进行开发,也欢迎大家留言交流(http://Ryu666.cnblogs.com).
下载链接:http://www.cnblogs.com/Files/Ryu666/多语言支持.rar