文章目錄
- 國際化主要在以下幾個方面
- asp.net mvc中的資源檔
- 以聲明方式設定 ASP.NET 網頁的地區性和 UI 文化特性
- 用編程的方式設定ASP.NET網頁的地區性和UI地區性
國際化主要在以下幾個方面
1. 通常的文本國際化. 通過asp.net資源檔解決.
2. 前端國際化. 通過js語言套件解決.
3. 後台輸出的提示言等的國際化.(比如說”該使用者名稱不存在”)
4. 狀態枚舉的國際化.(比如說”正常”,”停止”等狀態)
5. 資料庫資料的國際化(比如說一級目錄二級目錄等文本)
asp.net mvc中的資源檔
本地檔案: Views檔案夾內. 用於給ASPX,ASCX,模板頁等的國際化. 命名例如. Login.aspx.en-US.resx
<%= this.GetLocalResourceObject("First") %>
通用檔案: 網站根目錄. 命名規則: 類名.語言代碼.resx.
//頁面
<%= this.GetGlobalResourceObject("Test","string1") %>
//後台
類名.欄位名
以聲明方式設定 ASP.NET 網頁的地區性和 UI 文化特性
若要設定所有頁的地區性和 UI 文化特性,請向 Web.config 檔案添加一個 globalization 節,然後設定 uiculture 和 culture 屬性,如下面的樣本所示:
<globalization uiculture="es" culture="es-MX" />
若要設定單個頁的地區性和 UI 文化特性,請設定 @ Page 指令的 Culture 和 UICulture 屬性,如下面的樣本所示:
<%@ Page UICulture="es" Culture="es-MX" %>
若要使 ASP.NET 將地區性和 UI 文化特性設定為當前瀏覽器設定中指定的第一種語言,請將 UICulture 和 Culture 設定為 auto。也可以將該值設定為 auto:culture_info_name,其中 culture_info_name 是地區性名稱。有關地區性名稱的列表,請參見 CultureInfo。您可以在 @ Page 指令或 Web.config 檔案中進行該設定。
用編程的方式設定ASP.NET網頁的地區性和UI地區性
將頁的 Culture 和 UICulture 屬性設定為語言和地區性字串(如 en-US)。這兩個屬性是頁的內部屬性,只能在頁中使用。
將當前線程的 CurrentUICulture 和 CurrentCulture 屬性分別設定為 UI 文化特性和地區性。CurrentUICulture 屬性採用一個語言和地區性資訊字串。若要設定 CurrentCulture 屬性,請建立 CultureInfo 類的一個執行個體並調用其 CreateSpecificCulture 方法。
//在aspx頁面中
protected override void InitializeCulture()
{
if (Request.Form["ListBox1"] != null)
{
String selectedLanguage = Request.Form["ListBox1"];
UICulture = selectedLanguage ;
Culture = selectedLanguage ;
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(selectedLanguage);
}
base.InitializeCulture();
}
//在httpmodule中重新設定當前線程的CurrentUICulture和CurrentCulture屬性
public void Init(HttpApplication context)
{
context.PostAuthenticateRequest += new EventHandler(context_PostAuthenticateRequest);
}
void context_PostAuthenticateRequest(object sender, EventArgs e)
{
var httpContext = HttpContext.Current;
try
{
if (httpContext.Request.Cookies["lang"] != null)
{
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(httpContext.Request.Cookies["lang"].Value.ToString());
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(httpContext.Request.Cookies["lang"].Value.ToString());
}
}
catch (Exception)
{ }
}
通過以上的代碼. 我們可以簡單地完成國際化了.
具體操作可以看這裡
待續