早期開發未考慮全球化,英文版系統,頁面很多,每個頁面內容也很多。
本地化,如果選擇特定的語言環境,應該顯示特定語言。
系統簡介:
1)沒有採用windows控制項,而是根據系統的特性自定義控制項,比如button,自定義的控制項為rcbuton、rctextbox rclabel等。
2)win form開發。
3)。net .2.0 和3.5,vs2010開發。
4)頁面文字有些是在程式中設定,或者是從資料庫中讀取。
5)業務範圍很廣。
步驟:(以form1頁面為例)
1)設定form1窗體的屬性:localizable設定為true,language設定為法文(暫定翻譯成法語)。
2)逐個翻譯頁面中需要翻譯的字段。自動生成對應的資源檔案,比如form1.fr.resx。
3)在控制面板中設定區域和語言,當設定成方法時,就能啟動法語版本,一般我們是顯示英語。
4)也可以通過程式設計設定,改變thread.currentthread.currentculture 和thread.currentthread.currentuiculture的值。
優點:1)操作簡單,編譯專案時,為每種語言建立乙個附屬程式集,這個附屬程式集只包含本地化資源。
2)根據不同語言的特性重新調整介面。
3)可以外包翻譯,通過 windows資源本地化編輯器進行翻譯,該工具無須訪問c#原始檔(產品部可以自己翻譯啦)。
缺點:對於本系統改造,工作量太大。
將介面控制項上顯示的內容text(以下簡稱text)以其對應的鍵值textkey代替,並將textkey和text的對應關係儲存在配置檔案中。在控制項初始化或顯示時,通過多語言模組得到對應的textkey對應的text。對於沒有定義textkey的內容,將採用原來的內容,不進行多語言替換。
1)生成資源檔案
採用工具抽取頁面上的文字內容至csv檔案中。格式如下:
模組名 檔名 控制項名 文字內容 詞頻 textkey
前五項是從頁面中獲取,textkey需要手工操作,根據text內容定義唯一的textkey,再根據textkey生成資源檔案。以abcd.xml為例:
<?xml version="1.0" encoding="gb2312"?>
2)自定義控制項改造
在控制項屬性欄中顯示textkey屬性。
public string textkey
getset
//這路操作顯示的內容。關鍵步驟textcache
3)通過配置檔案設定多語言屬性。(目前沒有解決根據機器culture來自動獲取語言特性,只能通過配置檔案設定)。
4)載入多語言包。
解析資源字典檔案,將textkey和對應的text新增到dictionary中,再將dictionary中的內容存放到textcache(用來存放資源字典)中。
優缺點:
1)工作量比上面的方法要少很多。翻譯人員可根據字典直接翻譯。
2)需要手動設定語言,不能獲取機器的culture,資源字典是一次性載入到記憶體中,如果以後業務量增加,一次性載入不了怎麼辦?資源檔案存放在伺服器中,檔案如果太大,傳輸速度?
WPF 多語言實現
原文 wpf 多語言實現 很多國際化的程式都提供了多語言的選項,這樣方便不同國家的使用者更方便的使用軟體。這篇部落格中將介紹在wpf中實現多語言的方式。方式一,使用wpf動態資源的方式實現。先簡單介紹下staticresource和dynamicresource,這兩者的區別在於動態資源改變後會實時...
WPF 多語言實現
原文 wpf 多語言實現 很多國際化的程式都提供了多語言的選項,這樣方便不同國家的使用者更方便的使用軟體。這篇部落格中將介紹在wpf中實現多語言的方式。方式一,使用wpf動態資源的方式實現。先簡單介紹下staticresource和dynamicresource,這兩者的區別在於動態資源改變後會實時...
WPF 多語言實現
很多國際化的程式都提供了多語言的選項,這樣方便不同國家的使用者更方便的使用軟體。這篇部落格中將介紹在wpf中實現多語言的方式。方式一,使用wpf動態資源的方式實現。先簡單介紹下staticresource和dynamicresource,這兩者的區別在於動態資源改變後會實時的體現出來,而靜態資源只載...