.NET多语言切换,配置

法一:

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);

          }

posted @ 2022-03-23 08:47  离。  阅读(314)  评论(0编辑  收藏  举报