asp.net mvc 國際化(1) 國際化的基礎

來源:互聯網
上載者:User
文章目錄
  • 國際化主要在以下幾個方面
  • 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)

            { }

        }

通過以上的代碼. 我們可以簡單地完成國際化了.

具體操作可以看這裡

待續

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.