LocBaml.exe是微軟官方提供的一款WPF本土化的解決方案,這款工具可以幫助開發(fā)者將自己的產(chǎn)品進(jìn)行經(jīng)濟(jì)而有效的本地化,支持多國(guó)語(yǔ)言,推薦有需要的用戶下載使用。
WPF全球化介紹:
當(dāng)您將自己的產(chǎn)品限制為只能通過(guò)一種語(yǔ)言使用時(shí),您便將潛在的客戶群限制為全球 65 億人口中的一小部分。 如果您想讓自己的應(yīng)用程序被全球用戶所接受,那么對(duì)產(chǎn)品進(jìn)行經(jīng)濟(jì)而有效的本地化將是贏得更多客戶的最好、最經(jīng)濟(jì)的方法。
本概述介紹 Windows Presentation Foundation (WPF) 中的全球化和本地化。 全球化是指設(shè)計(jì)和開發(fā)在多個(gè)地點(diǎn)執(zhí)行的應(yīng)用程序。 例如,全球化支持適用于不同區(qū)域性用戶的本地化用戶界面和區(qū)域數(shù)據(jù)。 WPF 提供全球化設(shè)計(jì)功能,包括自動(dòng)布局、附屬程序集以及本地化特性和注釋。
本地化是針對(duì)應(yīng)用程序所支持的特定區(qū)域性將應(yīng)用程序資源轉(zhuǎn)換為本地化版本的過(guò)程。 在 WPF 中進(jìn)行本地化時(shí),可使用 System.Windows.Markup.Localizer 命名空間中的 API。這些 API 實(shí)現(xiàn) LocBaml Tool Sample(LocBaml 工具示例)命令行工具。
WPF全球化解決方法:
1.設(shè)置默認(rèn)語(yǔ)言環(huán)境
項(xiàng)目文件LocalizationDemo.csproj添加<UICulture>en-US</UICulture>,程序集信息AssemblyInfo.cs中把[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]注釋去掉。
2.在xaml文件中添加Uid
打開Visual Studio 命令提示(2010)如下圖,進(jìn)入項(xiàng)目文件.csproj所在目錄,運(yùn)行命令:msbuild /t:updateuid LocalizationDemo.csproj;若要驗(yàn)證是否缺少或重復(fù)Uid,運(yùn)行命令:msbuild /t:checkuid LocalizationDemo.csproj。
3. 通過(guò)Localization.Attributes,設(shè)置本地化的特性(屬性)
如:<DataGridTextColumn x:Uid="DataGridTextColumn_1" Header="No." Width="auto" Binding="{Binding No}" Localization.Attributes="$Content(Ignore) Width(Ignore) Header(None Readable Modifiable)"/>,這里Width(Ignore)設(shè)置Width屬性不實(shí)現(xiàn)本地化,Header(None Readable Modifiable)設(shè)置Header屬性可讀可寫需要實(shí)現(xiàn)本地化,更多本地化特性細(xì)節(jié)請(qǐng)參見本地化特性和注釋。
4. 編譯項(xiàng)目,生成語(yǔ)言資源文件
生成的LocalizationDemo.resources.dll,在\bin\Debug\en-US\目錄下。
5. 將語(yǔ)言資源文件輸出存儲(chǔ)為 .csv 文件,以作進(jìn)一步分析
將 LocBaml.exe 復(fù)制到應(yīng)用程序的 bin\debug 文件夾,即創(chuàng)建主應(yīng)用程序集的位置。打開Visual Studio 命令提示(2010),進(jìn)入bin\debug目錄,運(yùn)行命令:LocBaml.exe /parse en-US/LocalizationDemo.resources.dll /out:en-US.csv
6. 翻譯可本地化內(nèi)容
注意此步應(yīng)當(dāng)使用兼容unicode的文本編輯器進(jìn)行編輯翻譯。或者中文系統(tǒng)下將 .csv 文件在 Microsoft Excel 中進(jìn)行查看,對(duì)最后一列(值)進(jìn)行翻譯更改,另存為zh-CN.csv。
此時(shí)會(huì)彈出如下消息提示框,選擇"是(Y)",
然后用記事本打開zh-CN.csv文件,選擇"另存為",如下圖(初始編碼為"ANSI")選擇"UTF-8"保存。
7. 使用 LocBaml 生成新增語(yǔ)言的.resources.dll資源文件
運(yùn)行下面命令根據(jù)翻譯的zh-CN.csv生成中文資源文件LocalizationDemo.resources.dll,可以在E:\目錄下找到,將生成的LocalizationDemo.resources.dll復(fù)制到項(xiàng)目\bin\Debug\zh-CN\目錄下即可。
LocBaml.exe /generate en-US/LocalizationDemo.resources.dll /trans:zh-CN.csv /out:E:\ /cul:zh-CN
8. 測(cè)試新增語(yǔ)言資源文件
更改操作系統(tǒng)的地區(qū)設(shè)置(“開始” | 控制面板 |“區(qū)域和語(yǔ)言選項(xiàng)”)。
代碼中控制
//中文為: "zh-CN"CultureInfo ci = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;