多语言机制:
A判断对方浏览器的语种区域设置。
B采用多个的资源文件,每个语种一个。
C根据A,读取不同的资源文件。
D利用cookie记录自定义语言偏好。
Asp2.0已内置了AC,主要的工作是BD。当然,AC中的相关类我们也可以用以自定制。下文介绍的是最简单的API,不过已经足够了,其他可以查MSDN。
采用全局资源的多语言:
1.
web.config中添加<globalization culture="auto:en-US" uiCulture="auto:en" />;
2.
添加文件夹App_GlobalResources;
3.
添加文件shares.resx,输入相关name-value对: address-中国;
4.
复制并重命名为shares.en-gb.resx,修改字段值为英文:address-China;(文件命名规则最后附上)
5.
从资源文件中取值的访问方式(asp会自动根据客户端语言设置读取不同的资源文件):
a)
Aspx页面后台cs文件中:
i.
Label2.Text = this.GetGlobalResourceObject("shares", "address") as string;
ii.
也可写作 Resources.shares.address;
b)
后台类中:
i.
HttpContext.GetGlobalResourceObject("shares", "address") as string;
文件命名规则:文件名+区域代号+resx,区域代号可以通过打开IE,打开“工具-internet选项-语言”查看,这里同时也是语言首选项设置的地方。
―――――――――――――――――――――――――――――――――――――――
――― 个人认为上述机制已经可以达到多语言的目的了,下面资料仅供参考 ――――
―――――――――――――――――――――――――――――――――――――――
如果绝大部分的UI显示都采用asp控件,可看看以下:
针对asp控件的多语言:
1.
打开WebForm1.aspx页面,选中“工具-生成本地资源”;
2.
打开App_LocalResources文件夹中的WebForm1.aspx.resx,输入相关控件的中文名;
3.
复制并重命名为WebForm1.aspx.en-gb.resx,修改字段值为英文;
4.
OK。
PS:后台自动添加的代码:
1.
Page添加属性Culture="auto" meta:resourcekey="ageResource1" UICulture="auto"
控件:
2.
控件自动添加属性meta:resourcekey="abc"
<aspabel ID="label1" runat="server" Text="Hello" meta:resourcekey="abc"></aspabel>
PS:一个资源定义,如上述的abc可共享用于多个控件。
PS:不想每次都采用“工具-生成本地资源”的方式,可以手工为控件添加多语言支持。
1.
asp控件添加属性meta:resourcekey="abc";
2.
本地资源文件添加name-value对类似:abc.Text-中文字,abc.Title-中文字;
3.
当然其他语言版本也要添加。