ASP.NET多國語言開發快速體驗

在ASP.NET之中,如果要開發多國語言的網頁,已經比其他程式語言簡單許多。而我們在開發多國語言時,都會使用組件資源檔(*.resx),加到「\App_GlobalResources」資料夾中,資源檔的內容是字串構成的對照表格,而且除了字串,也能將圖檔或其他檔案加入資源檔之中。

我們先在\App_GlobalResources中新增一個資源檔

Resource.resx

名稱:PageTitle
值:English Sample Page

再新增一個繁體中文資源檔

Resource.zh-TW.resx

名稱:PageTitle
值:繁體中文抬頭網頁


新增Default.aspx網頁,在@Page指示詞最後加上「Culture="Auto" UICulture="Auto"」兩屬性,跟ASP.NET說,此網頁請自動幫忙選擇文化屬性。

最後我們在Page_Load新增以下程式碼:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   '由資源檔Resource讀取PageTitle的值
   Page.Title = Resources.Resource.PageTitle
End Sub

要取得資源檔裡名稱與值很簡單,使用Resources.資源檔.名稱就可以取得名稱的值。這樣我們馬上就完成一個自動判定語系的網頁,而且會自動抓取抬頭設定值,如果你是使用繁體中文的瀏覽器,那網頁的抬頭應該是「繁體中文抬頭網頁」,其他語系瀏覽器應該都是「English Sample Page」。ASP.NET會自動判定你的語系,抓取對應的資源檔,如果沒有對應的資源檔,會使用預設資源檔的值(Resource.resx)

在設計上,我們會先計設一個預設語言的資源檔,再依序新增其他語言的資源檔,例如:
WebResource.resx (預設)
WebResource.zh-TW.resx
WebResource.zh-CN.resx

這裡有一點要注意,就是後面新增資源檔的「語系」命名不能隨便亂設,例如你把繁體中文的資源檔命名為WebSource.Big5.resx、WebSource.GB2312.resx,而是要依照.NET Framework中CultureInfo類別的規定來命名。

另外,如果你只想讓某一個.aspx網頁使用資源檔,則需要將資源檔新增至「\App_LocalResources」資料夾之下,然後依網頁名稱來命名資源檔名稱及相關資源檔。

例如,我有一個讓User下載資料的網頁Download.aspx,所以我們在\App_LocalResources新增以下資源檔:
Download.aspx.resx
Download.aspx.zh-TW.resx
Download.aspx.zh-CN.resx

這樣明白了吧,就把是直接用網頁名稱來命名資料檔,然後再依照預設資源檔來新增相關語系(zh-TW、zh-CN…)的資源檔,當ASP.NET執行到Downloads.aspx時,會自動去判斷瀏覽器的語系,再去找相對應的資源檔,再顯示出相關語言的頁面。

記得,語系(zh-TW…)的命名一樣是要照規定。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。