要实现网站的多语言,最关键的就是所有与用户界面有关的东西都要从动态地读取.实现的技术不难,但却有很多细节要考虑,比如英文比较长,中文比较短的显示问题.这些先不谈,这里介绍一下实现方法,虽然实在没什么技术含量.

首先建立四个资源文件,ERR_EN_US.resx(英文的用户交互),ERR_ZH_CN.resx(中文的用户交互),UI_EN_US.resx(英文的界面显示),UI_ZH_CN.resx(中文的界面显示)内容自己填,但是ERR_EN_US.resx,ERR_ZH_CN.resx这两个文件要有相同的KEY,例子中写了一个ERROR_DB。UI_EN_US.resx,UI_ZH_CN.resx这两个文件要有相同的KEY,例子中写了一个BUTTON_SHOWMSG。

然后新建一个类WebHelper,继承于Page,用于让所有的页面都继承于这个类,这样的好处就是方便调用.里面定义了两个ResourceManager,一个是关于界面显示的,另一个用于与用户交互的一些信息.

 

利用.net的资源文件实现网站的多语言版本public static ResourceManager RMUI;
利用.net的资源文件实现网站的多语言版本
public static ResourceManager RMERR;

 

这两个变量在程序首次运行时就要赋值,所以在Global.asax中写Application_Start方法为其赋值

 

利用.net的资源文件实现网站的多语言版本       protected void Application_Start(object sender, EventArgs e)

 

我们希望根据Web.config的Appsetting设置语言.所以在Web.config中新增一个设置

  

利用.net的资源文件实现网站的多语言版本  <appSettings>
利用.net的资源文件实现网站的多语言版本    
<!--切换语言,可以使用"ZH_CN"或"EN_US"-->
利用.net的资源文件实现网站的多语言版本    
<add key="lang" value="EN_US"/>
利用.net的资源文件实现网站的多语言版本  
</appSettings>

 

然后把这两个资源写成枚举,方便调用.另一个好处就是,在重命名的时候,可以利用VS的重命名功能,非常地方便.这里只定义了一项.

 

利用.net的资源文件实现网站的多语言版本        public enum UILang
        }

 

下面是用于页面中调用的两个方法:

 

利用.net的资源文件实现网站的多语言版本        public string GetUI(UILang uiLang)
        }

 

其它页面继承于WebHelper,直接调用GetERR和GetUI即可.

 

利用.net的资源文件实现网站的多语言版本        protected void Page_Load(object sender, EventArgs e)
        }

相关文章: