ASP.NET MVC - 使用 MVC 實作多國語系(一)

摘要:ASP.NET MVC - 使用 MVC 實作多國語系(一)

接觸 dot NET 已經有一段滿常的時間,都沒實作過 多國語言 的功能,這陣子終於有機會用到了,讓小弟發覺確實是一個好東西。此時想到以前公司要作多國語言網站,那時懵懂的我確實不知道該如何下手,最後還是外包給廠 商來做,現在想想那時有能力的話,頂多再加上一位美工配合,就不用花冤妄錢了。廢話就不多說,以下就來實作唄...

步驟一:在 Web.config 中加入 globalization

Code:

<system.web>
    <!-- 設定整個網站進行自動語系判斷 -->
    <globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>

步驟二:在 專案 中加入 App_GlobalResources

畫面:


步驟三:在
App_GlobalResources 中,新增 Resource.resx 與 Resource.en-US.resx 兩個檔案

畫面:


呆言呆語:我們建立了
Resource.resx 與 Resource.en-US.resx 兩個檔案,Resource.resx 是預設的語系(預設為 繁體中文 ),而 Resource.en-US.resx 就是所 英文 語系;所以要再加上第三個語系就可以這樣命名 Resource.zh-CN.resx,這樣就有 簡體中文 的定義檔案嚕

步驟四:在
Resource.resx 與 Resource.en-US.resx 中填入值

畫面:
Resource.resx


Resource.en-US.resx




步驟五:在 Global.asax 中的 Application_BeginRequest 事件中設定指定 UICulture 的程式碼,才可以讓 ASP.NET 依據使用者瀏覽器中的 Cookie 進行判斷

Code:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpCookie MyLang = Request.Cookies["MyLang"];
    if (MyLang != null)
    {
        System.Threading.Thread.CurrentThread.CurrentCulture =
            new System.Globalization.CultureInfo(MyLang.Value);
        System.Threading.Thread.CurrentThread.CurrentUICulture =
            new System.Globalization.CultureInfo(MyLang.Value);
    }
}

步驟六:在頁面上加入
Resource 資料

Code:

<p><%=Resources.Resource.l星期一l%></p>
<p><%=Resources.Resource.l星期二l%></p>
<p><%=Resources.Resource.l星期三l%></p>
<p><%=Resources.Resource.l星期四l%></p>
<p><%=Resources.Resource.l星期五l%></p>
<p><%=Resources.Resource.l星期六l%></p>
<p><%=Resources.Resource.l星期日l%></p>


步驟七:使用 IE 瀏覽器 的 語言來測試

畫面:



畫面:
切換 中文 (繁體,台灣) [zh-TW]


切換 英文 (美國) [en-US]


參考:
如何讓 ASP.NET 依據瀏覽器指定的語系自動選用資源檔