一個網站可能具有多個語言,要實現這個功能在ASP.NET中是很是簡單的。咱們須要爲項目添加資源文件文件夾,而且添加針對網站的特定的資源文件等便可。在ASP.NET中資源文件分紅兩類:全局和頁面級(即「本地」級)。html
1、全局資源文件:web
顧名思義,全局資源文件是供整個網站內部所有頁面調用的。所以必須放在App_GlobalResources中(能夠經過右鍵建立該文件夾,而後繼續右鍵建立資源文件)。ide
命名規則:任意。測試
使用規則:使用「<$Resources:全局資源文件名稱,資源名稱>」進行對特定屬性的綁定。網站
固然,也能夠經過後臺代碼形式綁定(由於生成了強類型:能夠經過Resource.全局資源文件名.資源名稱)形式綁定讀取。ui
注意:若是是多語言的話,應該按照如下命名規則進行:任意全局文件名稱.語言(區域)名稱.resx。spa
綁定的時候則按照上面藍色(使用規則)進行綁定,注意此時「全局資源文件名稱」不能指定語言區域!線程
2、頁面級資源文件:code
也叫本地資源文件,通常只用於單個頁面。命名規則:控件的ID.屬性名。orm
綁定的時候只要手動在某個控件以後增長:meta:resourceKey="本地資源文件中控件的ID",注意ID和控件的ID必須對應!
若是針對某個頁面特定控件建立多語言版本,命名規則:頁面名稱.aspx.語言(區域).resx。
3、示例代碼:
本實例演示多語言版本:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CSharp.WebForm1" UICulture="zh-CN" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>語言測試</title> </head> <body> <form id="form1" runat="server"> <div> 請選擇對應語言: <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"> <asp:ListItem Value="zh-CN">中文</asp:ListItem> <asp:ListItem Value="en-US">英語</asp:ListItem> </asp:DropDownList> <asp:Panel ID="Panel1" runat="server" BackColor="<%$Resources:GlobalResource,PanelBackColor %>"> <asp:Label ID="Label1" runat="server" Text="Label" meta:resourceKey="Label1"></asp:Label> </asp:Panel> </div> </form> </body> </html>
注意上面代碼中劃線的部分——UlCulture,能夠直接指定當前頁面的語言(假設是zh-CN)。另外注意綁定的方式。
項目結構:
兩個全局文件中定義了一個叫作PanelBackColor的Key,而值則是(zh-CN:Red,默認是LightBlue)。同理,兩個本地資源文件中定義了Label1做爲Key,zh-CN中是中文「歡迎來到ASP.NET的世界」,另一個是英語版本。你們能夠測試一下。
如下給出後臺代碼:
public partial class WebForm1 : System.Web.UI.Page { /// <summary> /// 動態設置當前語言,改變當前線程的語言 /// </summary> protected override void InitializeCulture() { string language = Request.Form["DropDownList1"]; if (language != null) { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language); } } }
另外想補充一點:
1)動態改變當前語言,必須按照後臺代碼(重寫InitializeCulture)實現。
2)或者能夠修改配置文件(全局其做用, system.web節點下追加):
<globalization uiCulture="zh-CN"/>
3)又或者在aspx中加入UICulture屬性(參考我給出的aspx示例代碼)。
其中若是同時設置,優先級大小以下:2<3<1