明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

.NET Framework 中多語言支持的完成

[摘要]前言 曾經(jīng)記得在 win32 的原生代碼編程時代,為實現(xiàn)一個多語言界面而絞盡腦汁,因此出現(xiàn)了大量的教程都是教你如何讓程序?qū)崿F(xiàn)多語言支持,這些實現(xiàn)方法的技術(shù)水平參差不齊,很難找到好的框架實現(xiàn)在商業(yè)程序中。.NET 時代的到來,我們突然發(fā)現(xiàn)這一切變得那么簡單,你只需輕松點擊鼠標就可以讓你的程序完美...
前言
曾經(jīng)記得在 win32 的原生代碼編程時代,為實現(xiàn)一個多語言界面而絞盡腦汁,因此出現(xiàn)了大量的教程都是教你如何讓程序?qū)崿F(xiàn)多語言支持,這些實現(xiàn)方法的技術(shù)水平參差不齊,很難找到好的框架實現(xiàn)在商業(yè)程序中。.NET 時代的到來,我們突然發(fā)現(xiàn)這一切變得那么簡單,你只需輕松點擊鼠標就可以讓你的程序完美實現(xiàn)多語言支持。
我不想在這里過多的解釋文中出現(xiàn)的概念,因為 MSDN 已經(jīng)為我們提供了完全本地化的技術(shù)文檔。

正文
我用的是 Visual Studio 2003 中的 Visual C#.NET 來實現(xiàn)的,我設(shè)計的這個 Demo 不僅可以自動根據(jù)當(dāng)前區(qū)域設(shè)置進行本地化的實現(xiàn),還可以手動更改界面語言,并且實現(xiàn)自定義資源的本地化。 Demo 源碼這里下載。
請跟隨我的步驟來完成:
創(chuàng)建名為“MultiLanguage”的新 Windows 應(yīng)用程序。
在“屬性”窗口中,將窗體的 Localizable 屬性設(shè)置為 true。
Language 屬性已經(jīng)設(shè)置為 (Default)。
將 MainMenu、PictureBox、Button 控件從“工具箱”的“Windows 窗體”選項卡拖到窗體上,然后按照我在 Demo 窗體中對這些控件的布局、設(shè)計進行設(shè)置。
將該窗體的 Language 屬性設(shè)置為“中文(中華人民共和國)”。
重新按照我在 Demo 窗體中對這些控件的中文界面的布局、設(shè)計進行設(shè)置。
單擊解決方案資源管理器中的“顯示所有文件”按鈕。
資源文件出現(xiàn)在 Form1.cs 的下面。Form1.resx 是后備區(qū)域性的資源文件,它將生成到主程序集中。Form1.zh-CN.resx 是在中國講的簡體中文的資源文件。
分別生成菜單項的 Click 事件,按照我在 Demo 中的實現(xiàn)代碼添加到事件處理部分。
大家主要學(xué)習(xí)我是如何動態(tài)修改界面上所有跟語言相關(guān)的元素,包括字符串、對象(例如PictureBox.Image)。
在“項目”菜單上單擊“添加新項”。
在“模板”框中選擇“程序集資源文件”模板。在“名稱”框中鍵入文件名“WinFormStrings.resx”。WinFormStrings.resx 文件將包含英語的后備資源。每當(dāng)應(yīng)用程序找不到更適合于 UI 區(qū)域性的資源時,就將訪問這些資源。
該文件被添加到解決方案資源管理器中的項目中,并自動在 XML 設(shè)計器中以“數(shù)據(jù)”視圖形式打開。
在“數(shù)據(jù)表”窗格中選擇“data”。
在“數(shù)據(jù)”窗格中,單擊空行,并在“name”列中輸入“strMessage”,在“value”列中輸入“Hello World”。
在“文件”菜單上,單擊“保存 WinFormStrings.resx”。
再執(zhí)行兩次步驟 8-12 以創(chuàng)建一個名為“WinFormStrings.zh-CN.resx”的資源文件,并且這個文件具有在下表中指定的字符串資源。WinFormStrings.zh-CN.resx 文件將包含特定于在中國講的簡體中文的資源。
資源文件名 name value
WinFormStrings.zh-CN.resx strMessage 你好!世界

生成 Button1 的 Click 事件,按照我在 Demo 中的實現(xiàn)代碼添加到事件處理部分。
這部分大家主要學(xué)習(xí)如何訪問手動添加的資源,其目的是為了在你以后編程時生成在對話框和錯誤信息中出現(xiàn)的可本地化字符串。
添加構(gòu)造函數(shù) Form1() 的代碼,按照我在 Demo 中的代碼進行添加。
保存和生成解決方案。
編譯并試著運行。
我是用 Release 模式進行編譯的,在項目目錄的 MultiLanguage\bin\Release 下會生成兩個子目錄“zh-CHS”、“zh-CN”,里面都有一個叫“MultiLanguage.resources.dll”的文件,分別對應(yīng)你在窗體中設(shè)計的后備區(qū)域性的資源文件。發(fā)布時請隨最后的編譯程序一起發(fā)布,不要改變 Bin 目錄下的任何目錄設(shè)置,.NET Framework 會根據(jù)一定規(guī)律進行本地化實現(xiàn),原理請參考 MSDN 相應(yīng)章節(jié)。

參考
MSDN Feb 2003 簡體中文版。具體參見
ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkWalkthroughLocalizingWindowsForms.htm