C#完美實現多語言版本Windows應用程序

 Visual Studio 對於.NET 程序的本地化提供了完整的支持,這裏僅介紹實現多語言版本本地化程序的簡單步驟.

注意黑體處爲關鍵點.

. 窗體本地化

對於Windows 窗體,你需要做的第一步是確定你的默認界面語言,默認語言是指當執行程序無法找到已定義的本地化資源時,默認使用的語言,由於.net使用utf-8作爲默認編碼,一般情況下在任何語言的系統上都能正常顯示.

本地化窗體一個關鍵的步驟是將窗體的本地化屬性(Localizable)設置爲True,此時窗體代碼中自動生成的代碼部分的字符串(Text屬性)將由原來的this.Text = Form1變爲resources.ApplyResources(this $this),並且窗體文件名下面會多出一個資源文件Form1.resx,雙擊該資源文件可以看到字符串已經生成爲資源了

像往常一樣在窗體上加入你需要的控件,並設置好屬性,控件的Text屬性同樣會自動生成爲資源(雙擊Form1.resx看看吧~),簡單吧,我們來看下一步,本地化窗體.

下面我們來添加英語環境下的窗體.在窗體屬性窗口中找到Language屬性(挨着Localizable),選擇英語(美國),現在我們把窗體上的各個字符串翻譯成英文,並修改窗體的默認字體爲Arial,字號8,完成後你會看到窗體文件名下面多出一個Form1.en-US.resx,這裏用來保存已本地化爲英文的資源.編譯程序,拷貝到英文系統下執行程序看看,效果怎麼樣?(什麼?你沒有英文環境?好吧,後面會提供解決辦法)

現在你已經成功的實現了中文簡體與英文美國的完美支持,如果需要其他語種的支持,選擇Language屬性列表中相應的語種重複上述步驟即可.需要注意的是.net使用的是unicode編碼,需要用unicode編碼其他語種後輸入到界面上,否則特別像繁體字容易出現亂碼.

需要注意的情況:如果需要在窗體上添加刪除控件,必須把窗體語言屬性(Language)修改爲默認後纔可以進行修改.

下面我們來看一下資源文件如何處理

. 資源本地化

在工程名稱上右鍵,選擇添加新項目,生成Resource1.resx文件,雙擊打開該文件,默認爲字符串資源器,在這裏你可以定義字符串資源,在字符串值中輸入Hello World(不包含雙引號),現在就可以在代碼中直接用Resource1.String1來引用了,注意這裏的資源也是同窗體一樣,是默認語言下的資源,在解釋如何添加其他語言前,我們先介紹一下.net解析資源的步驟

.net 資源文件名(這裏是Resource1.resx)由根名稱(Resource1),本地語言名稱(默認情況下還沒有)及擴展名組成,在讀取資源時,資源管理器會根據當前環境決定需要的本地語言名稱,例如英語,然後試圖以全名讀取資源,美國英語的本地名稱爲en-US(語言名稱可以從MSDN中查詢CultureInfo信息得到),那麼資源全名爲Resource1.en-US.resx,如果存在該文件,則載入該文件作爲資源文件,如果沒有則使用默認值Resource1.resx,確定好資源文件後開始查找指定的資源(例如String1),如果在本地資源文件中沒有找到,則向上查找上一級的本地資源文件,最終找到根名稱Resource1爲止.信息參考文章最後所附連接.

現在我們來添加美國英語資源,使用項目菜單添加新項,添加一個新的資源文件,命名爲Resource1.en-US.resx,雙擊打開,把Resource1.resx中的資源翻譯成英語填入其中,在代碼中添加一個窗體載入事件,在事件處理代碼中添加一行MessageBox.Show(Resource1.String1);編譯運行程序,觀察在中文簡體系統和英文系統下的顯示內容.

不停的在不同語言系統環境下切換很麻煩,下面提供可以在一臺電腦上測試不同語種的解決方案.

. 切換顯示語言

C# 窗體程序使用CultureInfo來管理當前語言,這裏CultureInfo分爲兩種,一種決定語言格式,一種決定語言資源(這裏我們僅需要後者),只需簡單的設置如下兩個變量即可改變程序顯示語言:

System.Threading.Thread.CurrentThread.CurrentCulture;

System.Threading.Thread.CurrentThread.CurrentUICulture;

在窗體初始化之前,我們設置

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(en-US);

即可把程序執行語言切換爲美國英語,編譯程序試試看吧

演練:本地化 Windows 窗體

Visual Studio 項目系統爲本地化 Windows 窗體應用程序提供相當大的支持。下面是兩種使用 Visual Studio 開發環境生成資源文件的方法:

使項目系統爲可本地化的用戶界面元素(如窗體上的文本和圖像)生成資源文件。然後將該資源文件生成到附屬程序集中。

添加一個資源文件模板然後使用 XML 設計器該模板。採取後一種方法的原因之一是爲了生成在對話框和錯誤信息中出現的可本地化字符串。然後,必須編寫代碼以這些資源。

本演練主題在一個 Windows 應用程序項目中演示這兩種過程。

還可以將文本文件轉換爲資源文件;有關信息,請參見文本文件格式中的資源和資源文件生成器 (Resgen.exe)

使 Visual Studio 生成資源文件

1. 創建名爲“WindowsApplication1的新 Windows 應用程序。有關詳細信息,請參見如何:創建 Windows 應用程序項目。

2. 屬性窗口中,將窗體的 Localizable 屬性設置爲 true

Language 屬性已經設置爲“(默認值)

3. Button 控件從工具箱的“Windows 窗體選項卡拖到窗體上,然後將其 Text 屬性設置爲 Hello World

4. 將該窗體的 Language 屬性設置爲德語(德國)

5. 將該按鈕的 Text 屬性設置爲 Hallo Welt

6. 將該窗體的 Language 屬性設置爲法語(法國)

7. 將該按鈕的 Text 屬性設置爲 Bonjour le Monde。如果需要的話,可調整該按鈕的大小以容納較長的字符串。

8. 保存和生成解決方案。

9. 單擊解決方案資源管理器中的顯示所有文件按鈕。

資源文件出現在 Form1.vbForm1.cs Form1.jsl 下面。Form1.resx 是默認區域性的資源文件,它將生成到主程序集中。Form1.de-DE.resx 是在德國講的德語的資源文件。Form1.fr-FR.resx 是在法國講的法語的資源文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章