系統多語言實現

2022-03-17 11:49:53 字數 1671 閱讀 5306

早期開發未考慮全球化,英文版系統,頁面很多,每個頁面內容也很多。

本地化,如果選擇特定的語言環境,應該顯示特定語言。

系統簡介:

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,這兩者的區別在於動態資源改變後會實時的體現出來,而靜態資源只載...