最近領導要求實現PMSWeb應用程序的多區域語言的支持,所以在網搜集相關的信息,寫出了解決方案文檔,歡迎各位批評指正,謝謝!廢話少說,進入正題:
多語言解決方案(2013年1月 濟南)
目 錄
1. 開發目的... 1
2. 實現的效果... 1
3. 方案1說明(Asp.Net內置公共資源文件+ExtJS)... 1
3.1. 概述... 1
3.2. 實現步驟... 1
3.3. 本方案總結... 4
4. 方案2(XML+JS)... 5
4.1. 概述:... 5
4.2. 實現步驟:... 5
4.3. 本方案總結... 7
1. 開發目的
為了使PMS系統適應國際化項目管理的正常運行,根據當前用戶本地的語言、數據的習慣格式進行對系統進行本地化顯示,滿足用戶的需求。
2. 實現的效果
PMS系統平台根據用戶在登錄時所選擇的語言種類,對界面進行本地化顯示。用戶選擇中文時,系統界面展示的語言為中文,如果用戶選擇英文時,則展示為英文。本地化內容具體包括:界面顯示、提示信息、數據格式(日期、貨幣)。
3. 方案1說明(Asp.Net內置公共資源文件+ExtJS)
3.1. 概述
方案1采用.Net Framework2.0 公共資源文件(.resx)+ExtJS實現。為每個區域用戶分別添加該區域的語言描述文件(默認語言.resx,中文.resx,英文.resx)。語言描述文件內容主要包括:關鍵字名稱(key_name), 關鍵字值(key_value),其中關鍵字名稱是唯一的。系統根據當前用戶選擇的區域語言,在相應的區域語言描述文件中獲取界面顯示信息。
3.2. 實現步驟
1) 獲取當前用戶的區域信息
用戶在登錄時選擇語言種類。
PMS讀取當前操作系統安裝語言作為默認語言。
2) 建立區域語言資源文件
根據用戶群體的需求,創建區域語言資源文件。
具體實現步驟:
- 在解決方案管理器中添加Asp.Net 文件夾“App_GlobalResources”。
在文件夾中添加資源文件,例如 lang.resx。
添加所要描述的鍵名稱、鍵值。此文件為默認文件。
添加其他種類語言的描述文件,例如 英文(lang.en-US.resx)、中文(lang.zh-CN.resx),它們與默認文件的鍵名稱相同,鍵值不同。如下圖所示:
3) 設置Asp.Net 控件的文本顯示方式,
設置舉例如下:
標簽控件(引用公共資源文件):
<asp:Label ID="lbl_global" runat ="server" Width ="600px" Text ="<%$Resources:lang,Message %>"></asp:Label>
按鈕控件(引用本地資源文件):
<asp:Button ID="btnMessage" runat="server" OnClick="btnMessage_Click" Text="Message" meta:resourcekey="btnMessageResource1" />
隱藏按鈕(引用公共資源文件)
<asp:HiddenField ID="hidLang" runat ="server" value="<%=Resources.lang.Message %>"/>
JavaScript變量引用:
var strLang="<%=Resources.lang.Message%>";
實現效果界面展示:
3.3. 本方案總結
優點:本方案實現簡單,操作方便,安全性高。
對各種瀏覽器適應性高。
缺點: 部署后不易維護,需要重新編譯。
數據信息無法分類,難護分類。
4. 方案2(XML+JS)
實現方案說明:
4.1. 概述:
本方案主要將區域語言描述數據存放在XML文件中,根據在XML文件中自定義的節點標志變量及標志變量的值,通過Javascript對XML文件進行讀取操作。
4.2. 實現步驟:
Ø 設置區域語言初始標志
在Web.Config中,添加如下信息:
<appSettings> <add key="Flag" value="1" /> <!-- 0:中文; 1:英文--> </appSettings>
Ø 系統獲取區域語言標志
由於Javascript無法訪問web.config文件,所以需要在Global.asax文件中Application_Start事件添加如下處理:
從Web.config 讀取區域語言標志變量
將標志變量寫入在指定的XML文件中,例如web.xml文件。
Ø 提取界面顯示、提示信息區域語言描述信息,分別存入相對應的XML文件中,如中文.XML,英文.XML。格式如下所示:
英文:
<?xml version="1.0" encoding="utf-8" ?> <langShow> <formShow> <add key="Add" value="Add"></add> <add key="Delete" value="Delete"></add> <add key="ShowInfo" value="This is a test!"></add> </formShow> <alertmsg> <add key="FileNotExist" value="File isn't exist!"></add> <add key="DelInfo" value="Are you sure to delete this file?"></add> </alertmsg> </langShow>
中文:
<?xml version="1.0" encoding="utf-8" ?> <langShow> <formShow> <add key="Add" value="添加"></add> <add key="Delete" value="刪除"></add> <add key="ShowInfo" value="這是一個測試用例"></add> </formShow> <alertmsg> <add key="FileNotExist" value="文件不存!"></add> <add key="DelInfo" value="請確認是否刪除該文件?"></add> </alertmsg> </langShow>
Ø 根據區域標志,通過Javascript在對應的上述文件中讀取顯示信息。
界面效果顯示如下圖所示:
4.3. 本方案總結
優點:
資源文件維護方便,不用重新編譯。
數據信息可以分類,便於維護。
缺點:
安全性差,用戶可以直接打開資源文件。
適應性差。系統需要辨別不同的瀏覽器(IE,Firefox..)。
代碼下載: