溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Asp.Net中使用多語言總結(jié)

發(fā)布時(shí)間:2020-08-06 01:01:48 來源:網(wǎng)絡(luò) 閱讀:3056 作者:cdsi 欄目:編程語言

1.實(shí)現(xiàn)方法

VS中添加 App_GlobalResources目錄

Asp.Net中使用多語言總結(jié)

在該目錄中添加兩個(gè)資源文件 Resource.resx、Resource.en-us.resx

Asp.Net中使用多語言總結(jié)

資源文件內(nèi)容如下圖所示:

Asp.Net中使用多語言總結(jié)

控件中綁定

<asp:Label runat="server" ID=”labLogin” Text="<%$ Resources:Resource,LoginTitle %>" ></asp:Label>

其中Resources為資源文件的文件名,LoginTitle為資源文件中定義的文本項(xiàng)名稱

Asp.Net中使用多語言總結(jié)

代碼中使用

this.labLogin.Text = Resources.Resource.LoginTitle;//后臺(tái)代碼中使用

測試

可通過如下代碼強(qiáng)制頁面為英文模式,進(jìn)行測試(也可以通過更改IE設(shè)置默認(rèn)語言)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="Case.Login" Culture="en-us" UICulture="en-us"   %>

Asp.Net中使用多語言總結(jié) 

2.本地資源和全局資源

前面介紹的全局資源文件的使用,實(shí)際項(xiàng)目中會(huì)有很多特定的資源(只在某個(gè)頁面或函數(shù)中使用),如果全部放在全局資源文件中,該資源文件內(nèi)容將會(huì)很多,難以維護(hù),取一個(gè)惟一的鍵值名稱都難,這種情況asp.net有更好的解決方案,那就是本地資源文件“App_LocalResources”:

  App_GlobalResources和App_LocalResources的區(qū)別:

  前者主要放一些全局類的信息,如多個(gè)頁面或多個(gè)模塊中都會(huì)用到的字符串;

  后者主要放置某一個(gè)頁面關(guān)聯(lián)的特定的資源信息,App_LocalResources使用方式如下:

  在aspx所在的目錄中創(chuàng)建“App_LocalResources”文件夾,添加資源文件, 資源文件名稱格式:"頁面名稱加后綴.resx",如Login.aspx.resx  Login.aspx.en-us.resx

   文件中的資源對(duì)象命名約定resourcekey.property。例如 btnLogin.Text,代碼結(jié)構(gòu)如下圖,Index.aspx是在Case子目錄下面,故在Case目錄中創(chuàng)建App_LocalResources目錄

Asp.Net中使用多語言總結(jié)

資源文件內(nèi)容

Asp.Net中使用多語言總結(jié)

界面中使用

注意紅色字體部分:

<form id="form1" runat="server"> 
     <asp:Button ID="btnTest" meta:resourcekey="btnSubmit" runat="server" />    
</form>

后臺(tái)代碼中使用

this.Title = GetLocalResourceObject("PageTitle").ToString();

3.實(shí)現(xiàn)多語言切換

    前臺(tái)界面實(shí)現(xiàn)語言切換,切換后將選擇的語言 zh-cn 或en-us等字符串保存起來(Session、Cookie、或用戶數(shù)據(jù)表中),頁面瀏覽時(shí)先讀取到用戶的語言,頁面中重寫InitializeCulture  函數(shù),綁定語言。

(建議將該函數(shù)寫在頁面基類中繼承自Page類,然后所有頁面手動(dòng)更改繼承關(guān)系,繼承自這個(gè)基類)

protected override void InitializeCulture()
      {
          string cultureString = "en-us"; //可以根據(jù)用戶選擇的語言,保存到session/cookie中 然后去取
          System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(cultureString);
          System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cultureString);         
      }
      protected void Page_Load(object sender, EventArgs e)
      {
          this.Page.Title = Resources.Resource.LoginTitle;//后臺(tái)代碼中使用
      }

4.小技巧

  添加資源文件一種是手工添加,另一種快捷的辦法是讓VS自動(dòng)創(chuàng)建,方法如下:

  打開要?jiǎng)?chuàng)建多語言的aspx文件,選擇“工具”菜單下的“生成本地資源”,系統(tǒng)將會(huì)自動(dòng)生成“App_LocalResources”目錄,生成對(duì)應(yīng)頁面的資源文件,并對(duì)頁面中控件自動(dòng)生成常用的屬性映射。

Asp.Net中使用多語言總結(jié)

Asp.Net中使用多語言總結(jié)

附:各國語言對(duì)應(yīng)字符串清單

  http://msdn.microsoft.com/zh-cn/library/system.globalization.cultureinfo(v=vs.80).aspx

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI