国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

NET應(yīng)用程序的本地化及RESGEN.exe, AL.exe介紹

2019-11-17 03:58:34
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
一、概述

MSDN上有一個(gè)系列專門(mén)介紹.NET應(yīng)和程序的本地化跟全球化,可以查看:http://msdn.microsoft.com/en-us/library/1021kkz0.aspx

對(duì)我們來(lái)說(shuō),本地化的主要工作應(yīng)該是語(yǔ)言翻譯,本文從.NET應(yīng)用程序最基本的本地化解決方案說(shuō)起,嘗試尋找更為高效的本地化之道。



二、資源文件

MS提供了一個(gè)相對(duì)簡(jiǎn)便的本地化方案:使用資源文件(.resx),相信大家都比較熟悉它的用法,這里給一個(gè)簡(jiǎn)例:

--新建WinForm項(xiàng)目

--添加Button,text=OK

--選中窗體,修改Language屬性為Chinese (People’s Republic of China),此時(shí)localizable自動(dòng)變成True。同時(shí)將Button的文本改成“確定”,此時(shí)VS自動(dòng)添加了一個(gè)帶語(yǔ)言標(biāo)識(shí)的.resx文件:Form1.zh-CN.resx

--將窗體Form1的Language重新設(shè)置成default,編譯,可見(jiàn)button的文本為“OK”

--修改Form1的構(gòu)造器,在InitializeComponent()前添加一行:

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");



編譯,此時(shí)button的文本為“確定”。你可以在bin目錄下找到一個(gè)zh-CN文件夾,里面是包含資源信息的dll(即所謂有的附屬程序集)。通常來(lái)說(shuō),你不需要一個(gè)窗體一窗體去設(shè)置CurrentThread.CurrentUICulture,因?yàn)轭櫭剂x,這是對(duì)整個(gè)線程有效的。



除了上面由VS自動(dòng)生成的資源文件外,通常,你可能還需要一些單獨(dú)的資源文件:

--新添項(xiàng)目,比如CommonHelper,添加兩個(gè).resx文件:CommonText.resx, CommonText.zh-CN.resx

--在COmmonText.resx中添加一條名為“msg1”,值為“for your information”的資源

--在CommonText.zh-CN.resx中添加一條名為“msg1”,值為“提示信息”的資源

--在上一個(gè)項(xiàng)目中Form1的Button click事件方法中加上:

ResourceManager rm = new ResourceManager(typeof(CommonHelper.CommonText));

MessageBox.Show(rm.GetString("msg1"));



這樣,你的提示信息也不用硬編碼在代碼中了,可以從資源文件中讀取。



三、如何提高效率?

上面提到的本地化方案是基礎(chǔ),但是對(duì)于現(xiàn)實(shí)中的某些項(xiàng)目,可能存在成百上千個(gè)頁(yè)面或者usercontrol,那么除了一個(gè)一個(gè)去添加帶語(yǔ)言標(biāo)識(shí)的資源文件并且由開(kāi)發(fā)人員對(duì)照的翻譯表一個(gè)個(gè)添加內(nèi)容外,有沒(méi)有比較方便的方法?答案是肯定的。首先先介紹兩個(gè)MS提供的工具:RESGEN.exe, AL.exe。






RESGEN.exe:資源文件生成器,如上圖,它可以將.resx文件生成.resources文件,對(duì)于后者這種形式,我們不作深究。命令格式:RESGEN yourresxname.resx outputname.resources



AL.exe:程序集鏈接器,如上圖,它可以將若干.resources文件鏈接成dll文件。命令格式:

al /t:lib /embed:xx1.resources /embed:xx2.resources /culture:zh-CN /out:outputname.resources.dll



值得注意的一點(diǎn)是,傳給AL.exe的.resources文件的文件名需要包含其名稱空間,例如:CommonHelper.CommonText.zh-CN.resources



有了這兩個(gè)工具,我們就可以對(duì)整個(gè)系統(tǒng)中本地化工作(語(yǔ)言翻譯)統(tǒng)一進(jìn)行處理了,這里不提供程序,只給出方案的步驟:

1)編寫(xiě)工具遍歷讀取系統(tǒng)中的所有.resx文件,獲取其中需要翻譯的item,由于.resx本質(zhì)是xml文件,所以這項(xiàng)工作容易完成。

2)將上一步所取得的內(nèi)容規(guī)范存儲(chǔ),比如存儲(chǔ)在xml文件中。

3)另寫(xiě)一小工具讀取上一步所得xml文件并提供界面,將此程序交于及xml專業(yè)翻譯公司翻譯,并得翻譯后的xml文件。

4)據(jù)翻譯后的xml文件,生成.resx文件。由于.resx文件格式固定,所以這一步也容易實(shí)現(xiàn)。

5)使用RESGEN.exe AL.exe生成附屬程序集dll,并將所有dll置于以culture縮寫(xiě)為名稱的文件中,比如zh-CN或en-GB,文件夾置于bin目錄下。



Ps,另有一篇相關(guān)文章,有興趣大家可以點(diǎn)此鏈接:http://www.codePRoject.com/KB/aspnet/LocalizationGlobalizPart2.aspx?display=Print


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 仙游县| 图木舒克市| 涟水县| 合山市| 濮阳市| 阜南县| 阳原县| 仙游县| 遂平县| 米脂县| 普兰县| 江油市| 青田县| 化州市| 镇雄县| 华阴市| 岐山县| 灌阳县| 沁阳市| 和平区| 阿巴嘎旗| 和顺县| 平乡县| 仁寿县| 虹口区| 金平| 石城县| 健康| 淮阳县| 玛纳斯县| 铜山县| 新营市| 台前县| 郑州市| 青阳县| 徐水县| 霸州市| 集贤县| 绥德县| 勐海县| 砀山县|