法一:
1.
1>在每个页面中
<%@page %>中引入Culture="auto" UICulture="auto"
如:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Culture="auto" UICulture="auto"%>
2>在web.Config中配置。
这样无需再每个页面中配置
<system.web>
<globalizationculture="auto"uiCulture="auto"/> …
</system.web>
2.添加资源文件 Resource.resx:中文文件,其中的内容名称为控件ID,值为中文
Resource.en.resx:英文文件,其中的内容名称为控件ID,值为英文
注意:资源文件名是规定好的。
资源文件必须在系统的App_GlobalResources文件夹中(右击解决方案下的一行,添加ASP.NET文件夹添加App_GlobalResources文件夹)
3.需要多语言的控件其Text=“<%$ Resources:Resource,Label1 %> 其中 Resource既为资源文件的第一个单词,Label1为控件的ID
如:<asp:Label ID="Label1" runat="server" Text="<%$ Resources:Resource,Label1 %>"></asp:Label>
4. 从前台传标志为中文或英文的标志给后台,由于利用的是改变电脑的默认语言去读取不同资源文件的。所以传给后台的标志也是规定好的。
这里利用DropDownList向后台传值,将DDL的选中的VALUE值传给后台。
若多个页面要用可以将其值写入Session
如:<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem Selected="True" Value="zh-CN">中文</asp:ListItem>
<asp:ListItem Value="en-US">english</asp:ListItem>
</asp:DropDownList>
5.后台处理。
应为需要翻译需要在页面加载前执行,覆盖方法InitializeCulture();
设置电脑的默认语言。
如:
string lan = Request["DropDownList1"];//取DDl的Value值
Session[“lan”]=lan;
if(!string.IsNullOrEmpty(lan)){//若Value值不为空,设置电脑的默认语言。
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lan);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lan);
}
6.其他页面要用时就可以先执行方法InitializeCulture();
string lan = Session[“lan”]//取DDl的Session值
if(!string.IsNullOrEmpty(lan)){//若Value值不为空,设置电脑的默认语言。
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lan);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(lan);
}