.NET Framework 中多語(yǔ)言支持的完成
發(fā)表時(shí)間:2024-02-24 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]前言 曾經(jīng)記得在 win32 的原生代碼編程時(shí)代,為實(shí)現(xiàn)一個(gè)多語(yǔ)言界面而絞盡腦汁,因此出現(xiàn)了大量的教程都是教你如何讓程序?qū)崿F(xiàn)多語(yǔ)言支持,這些實(shí)現(xiàn)方法的技術(shù)水平參差不齊,很難找到好的框架實(shí)現(xiàn)在商業(yè)程序中。.NET 時(shí)代的到來(lái),我們突然發(fā)現(xiàn)這一切變得那么簡(jiǎn)單,你只需輕松點(diǎn)擊鼠標(biāo)就可以讓你的程序完美...
前言
曾經(jīng)記得在 win32 的原生代碼編程時(shí)代,為實(shí)現(xiàn)一個(gè)多語(yǔ)言界面而絞盡腦汁,因此出現(xiàn)了大量的教程都是教你如何讓程序?qū)崿F(xiàn)多語(yǔ)言支持,這些實(shí)現(xiàn)方法的技術(shù)水平參差不齊,很難找到好的框架實(shí)現(xiàn)在商業(yè)程序中。.NET 時(shí)代的到來(lái),我們突然發(fā)現(xiàn)這一切變得那么簡(jiǎn)單,你只需輕松點(diǎn)擊鼠標(biāo)就可以讓你的程序完美實(shí)現(xiàn)多語(yǔ)言支持。
我不想在這里過(guò)多的解釋文中出現(xiàn)的概念,因?yàn)?MSDN 已經(jīng)為我們提供了完全本地化的技術(shù)文檔。
正文
我用的是 Visual Studio 2003 中的 Visual C#.NET 來(lái)實(shí)現(xiàn)的,我設(shè)計(jì)的這個(gè) Demo 不僅可以自動(dòng)根據(jù)當(dāng)前區(qū)域設(shè)置進(jìn)行本地化的實(shí)現(xiàn),還可以手動(dòng)更改界面語(yǔ)言,并且實(shí)現(xiàn)自定義資源的本地化。 Demo 源碼這里下載。
請(qǐng)跟隨我的步驟來(lái)完成:
創(chuàng)建名為“MultiLanguage”的新 Windows 應(yīng)用程序。
在“屬性”窗口中,將窗體的 Localizable 屬性設(shè)置為 true。
Language 屬性已經(jīng)設(shè)置為 (Default)。
將 MainMenu、PictureBox、Button 控件從“工具箱”的“Windows 窗體”選項(xiàng)卡拖到窗體上,然后按照我在 Demo 窗體中對(duì)這些控件的布局、設(shè)計(jì)進(jìn)行設(shè)置。
將該窗體的 Language 屬性設(shè)置為“中文(中華人民共和國(guó))”。
重新按照我在 Demo 窗體中對(duì)這些控件的中文界面的布局、設(shè)計(jì)進(jìn)行設(shè)置。
單擊解決方案資源管理器中的“顯示所有文件”按鈕。
資源文件出現(xiàn)在 Form1.cs 的下面。Form1.resx 是后備區(qū)域性的資源文件,它將生成到主程序集中。Form1.zh-CN.resx 是在中國(guó)講的簡(jiǎn)體中文的資源文件。
分別生成菜單項(xiàng)的 Click 事件,按照我在 Demo 中的實(shí)現(xiàn)代碼添加到事件處理部分。
大家主要學(xué)習(xí)我是如何動(dòng)態(tài)修改界面上所有跟語(yǔ)言相關(guān)的元素,包括字符串、對(duì)象(例如PictureBox.Image)。
在“項(xiàng)目”菜單上單擊“添加新項(xiàng)”。
在“模板”框中選擇“程序集資源文件”模板。在“名稱(chēng)”框中鍵入文件名“WinFormStrings.resx”。WinFormStrings.resx 文件將包含英語(yǔ)的后備資源。每當(dāng)應(yīng)用程序找不到更適合于 UI 區(qū)域性的資源時(shí),就將訪(fǎng)問(wèn)這些資源。
該文件被添加到解決方案資源管理器中的項(xiàng)目中,并自動(dòng)在 XML 設(shè)計(jì)器中以“數(shù)據(jù)”視圖形式打開(kāi)。
在“數(shù)據(jù)表”窗格中選擇“data”。
在“數(shù)據(jù)”窗格中,單擊空行,并在“name”列中輸入“strMessage”,在“value”列中輸入“Hello World”。
在“文件”菜單上,單擊“保存 WinFormStrings.resx”。
再執(zhí)行兩次步驟 8-12 以創(chuàng)建一個(gè)名為“WinFormStrings.zh-CN.resx”的資源文件,并且這個(gè)文件具有在下表中指定的字符串資源。WinFormStrings.zh-CN.resx 文件將包含特定于在中國(guó)講的簡(jiǎn)體中文的資源。
資源文件名 name value
WinFormStrings.zh-CN.resx strMessage 你好!世界
生成 Button1 的 Click 事件,按照我在 Demo 中的實(shí)現(xiàn)代碼添加到事件處理部分。
這部分大家主要學(xué)習(xí)如何訪(fǎng)問(wèn)手動(dòng)添加的資源,其目的是為了在你以后編程時(shí)生成在對(duì)話(huà)框和錯(cuò)誤信息中出現(xiàn)的可本地化字符串。
添加構(gòu)造函數(shù) Form1() 的代碼,按照我在 Demo 中的代碼進(jìn)行添加。
保存和生成解決方案。
編譯并試著運(yùn)行。
我是用 Release 模式進(jìn)行編譯的,在項(xiàng)目目錄的 MultiLanguage\bin\Release 下會(huì)生成兩個(gè)子目錄“zh-CHS”、“zh-CN”,里面都有一個(gè)叫“MultiLanguage.resources.dll”的文件,分別對(duì)應(yīng)你在窗體中設(shè)計(jì)的后備區(qū)域性的資源文件。發(fā)布時(shí)請(qǐng)隨最后的編譯程序一起發(fā)布,不要改變 Bin 目錄下的任何目錄設(shè)置,.NET Framework 會(huì)根據(jù)一定規(guī)律進(jìn)行本地化實(shí)現(xiàn),原理請(qǐng)參考 MSDN 相應(yīng)章節(jié)。
參考
MSDN Feb 2003 簡(jiǎn)體中文版。具體參見(jiàn)
ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkWalkthroughLocalizingWindowsForms.htm