摘要:本文將通過一個實際案例來詳細剖析如何實現一個ASP.NET 2.0網站開發過程中的全球化與本地化問題。
一、簡介
全球化和本地化是每一位開發者在創建全球化產品或應用程序時必須清楚的兩個重要的慨念。盡管有許多文章對這個題目作過較好的解釋,但是我一直沒有看到一篇全面而綜合地討論關於全球化/本地化的所有重要概念的文章。本文旨在通過一個具體案例來詳細分析使用ASP.NET2.0開發一個web應用程序時所涉及到的全球化問題。
二、背景理論
全球化是應用程序開發中某一階段的任務,其目的是使程序能夠跨多個文化地區可用而不必顧及語言和地區性差別。例如,你在開發一個小型庫存管理程序,而你生活在例如英格蘭這樣一個以英語為主要語言的地區。現在,如果你想把你的程序賣到另一個不同國家,比方說是德國,那麼你需要確保你的程序以德語顯示並實現輸入。
本地化是使用一種地區特定的文化和語言來創建內容、輸入和輸出數據的過程。文化將會影響日期顯示設置(如是mm/dd/yyyy還是dd/mm/yyyy),貨幣顯示格式等。現在,確保我們的程序能夠被本地化的過程稱為國際化或全球化。用更簡單的術語來說,全球化能夠被定義為一組活動,通過這一活動,可以確保我們的程序能夠運行在使用不同語言和文化的地區。
因此,全球化是與內在代碼的改變相關聯的以便支持這樣的改變,如使用資源文件等;而本地化是使用一種特定的文化和地區性信息的過程,以便該程序能夠使用本地的語言和文化。這意味著要把字符串翻譯成一個特定的本地的語言;為此,要把語言特定的字符串放到資源文件中。一般地,應該從主構建和代碼開發階段就開始考慮全球化問題,而本地化通常在以後才實現。
三、 實現ASP.NET 2.0網站的全球化
讓我們從一個簡單的示例開始。為了解釋本地化並使事情盡可能簡單,我使用ASP.NET和C#創建了一個稱為TestSite的新網站(詳見本文下載的源碼);我添加了一個MasterPage和一個缺省頁面。這個缺省頁面中含有一個TextBox和一個Calendar控件;該TextBox控件有一個描述貨幣的雙精度型實數。在本例中,我們會看到隨著用戶選擇不同的語言貨幣格式發生相應的變化。當我運行該應用程序時,此缺省頁面看起來如下所示:
我已經出版了這個測試web應用程序,你可以在下列URL處看到它的功能版本:http://63.134.215.124/testsite/default.aspx
四、 文化和本地化
首先,讓我先解釋一下文化和本地化。
一般地,語言也依賴於地理位置。例如,法語既是法國人的語言也是加拿大人的語言(除此之外,還有其它許多國家也說法語)。但是從語言角度來講,加拿大法語不同於法國法語。同樣,在美國英語和英國英語之間也存在一定的區別。因此,語言常常需要與說該語言的特定地區相聯系,並且這是通過使用本地化(語言+地理位置)實現的。
例如,fr是法語語言的代碼,而fr-FR意味著法國使用的法語。因此,fr僅指定了這種語言,而fr-FR才實現了本地化。同樣,fr-CA定義另一個代表加拿大法語和文化的本地化。如果我們僅僅使用fr,那麼它僅代表是一種中立性質的文化(也即是,地區中立)。