- 浏览: 648107 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
abao1:
老贾 在安装IDEA的过程中,在激活步骤时,按如下操作即可: ...
IntelliJ IDEA 2016注册方法和注册码 -
bo_hai:
./usr/bin/java: symbol lookup ...
jmagick安装步骤 -
wxcking:
不错的, 收藏一下
JAVA使用POI生成Excel文件 -
zgyfh:
大哥,密码是多少啊?zgyfh@tom.com谢谢了!新手学习 ...
WPF做的必备示例 -
记忆无泪:
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF做的必备示例
本教程演示如何使用 LocBaml 工具创建本地化的应用程序。
LocBaml 工具是一种尚未投产使用的应用程序。 它显示为一种示例,该示例使用某些本地化 API 并演示如何编写本地化工具。 本主题包括下列各节。 |
本讨论提供用于本地化应用程序的详细步骤。 首先,准备应用程序以便可以提取将要进行翻译的文本。 在翻译文本之后,将已翻译的文本合并到原始应用程序的新副本中。
在本文的讨论过程中,您将用到 Microsoft Build Engine (MSBuild),它是一种通过命令行运行的编译器。
此外,本文还会指导您使用项目文件。 有关如何使用 MSBuild 和项目文件的说明,请参见生成和部署 WPF 应用程序 。
本讨论中的所有示例的区域性都使用 en-US(美国英语)。 这样,无需安装其他语言,您就可以完成示例中的各个步骤。
在此步骤中,您将准备要进行本地化的应用程序。 在 Windows Presentation Foundation (WPF) 示例中提供了一个 HelloApp 示例,它可用作本讨论中的代码示例。 如果想要使用此示例,请从 LocBaml Tool Sample (LocBaml 工具示例)下载可扩展应用程序标记语言 (XAML) 文件。
-
将应用程序开发到要启动本地化的程度。
-
在项目文件中指定开发语言,以便 MSBuild 生成的主程序集和附属程序集(扩展名为 .resources.dll 的文件)可包含非特定语言资源。 HelloApp 示例中的项目文件为 HelloApp.csproj。 在该文件中,您将找到按如下方式进行标识的开发语言:
<UICulture>en-US</UICulture>
-
将 UID 添加到您的 XAML 文件中。 UID 用于跟踪对文件进行的更改和标识必须要进行翻译的项。 若要将 UID 添加到您的文件中,请对项目文件运行 updateuid :
msbuild /t:updateuid helloapp.csproj
若要验证您没有缺少或重复的 UID,请运行 checkuid :
msbuild /t:checkuid helloapp.csproj
运行 updateuid 之后,您的文件应包含 UID。 例如,在 HelloApp 的 Pane1.xaml 文件中,您应该能够找到下面的内容:
<StackPanel x:Uid="StackPanel_1">
<TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>
<TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>
</StackPanel>
将应用程序配置为生成非特定语言资源附属程序集之后,便可生成应用程序。 这将生成使用 LocBaml 进行本地化所必需的主应用程序集以及非特定语言资源附属程序集。 生成应用程序:
-
对 HelloApp 进行编译以创建动态链接库 (DLL):
msbuild helloapp.csproj
-
新创建的主应用程序集 HelloApp.exe 创建在下面的文件夹中:
C:\HelloApp\Bin\Debug\
-
新创建的非特定语言资源附属程序集 HelloApp.resources.dll 创建在下面的文件夹中:
C:\HelloApp\Bin\Debug\en-US\
-
生成 LocBaml 所必需的所有文件都在 WPF 示例中。 从 LocBaml Tool Sample (LocBaml 工具示例)下载 C# 文件。
-
从命令行运行项目文件 (locbaml.csproj) 以生成工具:
msbuild locbaml.csproj
-
转到 Bin\Release 目录查找新创建的可执行文件 (locbaml.exe)。 例如:C:\LocBaml\Bin\Release\locbaml.exe。
-
在运行 LocBaml 时您可以指定的选项如下所示:
-
parse 或 -p :分析 Baml、资源或 DLL 文件,生成 .csv 或 .txt 文件。
-
generate 或 -g :使用经过翻译的文件,生成本地化的二进制文件。
-
out 或 -o [文件目录 ]:输出文件名。
-
culture 或 -cul [区域性 ]:输出程序集的区域设置。
-
translation 或 -trans [translation.csv ]:已翻译或已本地化的文件。
-
asmpath 或 -asmpath: [文件目录 ]:如果您的 XAML 代码包含自定义控件,则必须提供指向此自定义控件程序集的 asmpath 。
-
nologo :显示没有徽标或版权信息。
-
verbose :显示详细模式信息。
说明 如果您运行工具时需要上述选项的列表,请键入 LocBaml.exe 并按 Enter。
-
现在,您已创建了 LocBaml 工具,您就可以用它来分析 HelloApp.resources.dll 以提取要进行本地化的文本内容。
-
将 LocBaml.exe 复制到应用程序的 bin\debug 文件夹,即创建主应用程序集的位置。
-
若要分析附属程序集文件并将输出存储为 .csv 文件,请使用下面的命令:
LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv
说明 如果输入文件 HelloApp.resources.dll 和 LocBaml.exe 不在同一个目录中,请移动其中一个文件使它们位于同一个目录下。
-
当您运行 LocBaml 来分析文件时,输出将由以逗号分隔(.csv 文件)或以制表符分隔(.txt 文件)的七个字段组成。 下面演示对 HelloApp.resources.dll 进行分析的 .csv 文件:
HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;
HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World
HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World
这七个字段是:
-
BAML 名称 。 与源语言附属程序集相关的 BAML 资源的名称。
-
资源键 。 已本地化的资源标识符。
-
类别 。 值类型。 请参见本地化特性和注释 。
-
可读性 。 本地化人员是否可以读取此值。 请参见本地化特性和注释 。
-
可修改性 。 本地化人员是否可以修改此值。 请参见本地化特性和注释 。
-
注释 。 有助于确定如何对值进行本地化的值的其他说明。 请参见本地化特性和注释 。
-
值 。 翻译为所需的区域性的文本值。
下表显示这些字段如何映射到 .csv 文件的分隔值:
BAML 名称
资源键
类别
可读性
可修改性
注释
值
HelloApp.g.en-US.resources:window1.baml
Stack1:System.Windows.Controls.StackPanel.$Content
忽略
FALSE
FALSE
#Text1;#Text2
HelloApp.g.en-US.resources:window1.baml
Text1:System.Windows.Controls.TextBlock.$Content
无
TRUE
TRUE
Hello World
HelloApp.g.en-US.resources:window1.baml
Text2:System.Windows.Controls.TextBlock.$Content
无
TRUE
TRUE
Goodbye World
请注意,注释 字段的所有值都不包含值;如果一个字段没有值,则为空。 此外,还请注意,第一行中的项既不可读也不可修改,并且其类别 值为“Ignore”,这些都指示该值不能本地化。
-
-
为了便于在已分析的文件(尤其是大文件)中发现可本地化的项,您可以按照类别 、可读性 和可修改性 对项进行排序或筛选。 例如,您可以筛选掉不可读和不可修改的值。
使用任何可用的工具来翻译提取的内容。 其中的一个好方法就是:将资源编写为 .csv 文件并在 Microsoft Excel 中进行查看,对最后一列(值)进行翻译更改。
通过使用 LocBaml 分析 HelloApp.resources.dll 所标识的内容已进行了翻译,必须重新合并到原始应用程序中。 使用 generate 或 -g 选项生成新的 .resources.dll 文件。
-
使用下面的语法生成新的 HelloApp.resources.dll 文件。 将区域性设为 en-US (/cul:en-US)。
LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US
说明 如果输入文件 Hello.csv 和可执行文件 LocBaml.exe 不在同一目录中,请移动其中一个文件使它们位于同一个目录中。
-
将 C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll 目录下旧的 HelloApp.resources.dll 文件替换为新创建的 HelloApp.resources.dll 文件。
-
现在,应该在应用程序中翻译“Hello World”和“Goodbye World”。
-
若要翻译为其他区域性,请使用要翻译成的语言的区域性。 下面的示例演示如何翻译为加拿大法语:
LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA
-
在主应用程序集所在的同一程序集中,创建一个新的特定于区域性的文件夹以放置新的附属程序集。 对于加拿大法语,文件夹为 fr-CA。
-
将生成的附属程序集复制到新的文件夹中。
-
若要测试新的附属程序集,需要更改运行应用程序所用的区域性。 可以通过两种方法执行此操作:
-
更改操作系统的地区设置(“开始” | 控制面板 |“区域和语言选项” )。
-
在您的应用程序中,将下面的代码添加到 App.xaml.cs:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="SDKSample.App" x:Uid="Application_1" StartupUri="Window1.xaml"> </Application>
using System.Windows; // Application using System.Globalization; // CultureInfo using System.Threading; // Thread namespace SDKSample { public partial class App : Application { public App() { // Change culture under which this application runs CultureInfo ci = new CultureInfo("fr-CA"); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; } } }
使用 LocBaml 的一些提示
-
定义自定义控件的所有依赖程序集都必须复制到 LocBaml 的本地目录或安装到 GAC 中。 这是必需的,因为当本地化 API 读取二进制 XAML (BAML) 时必须具有对依赖程序集的访问权限。
-
如果主程序集已签名,则生成的资源 DLL 也必须进行签名以便可以加载它。
-
本地化的资源 DLL 的版本必须与主程序集保持同步。
接下来的内容
现在,您应对如何使用 LocBaml 工具有了一个基本的了解。 您应该能创建包含 UID 的文件。 通过使用 LocBaml 工具,您应该能够分析文件以提取可本地化的内容;在内容翻译完成之后,应该能够生成 .resources.dll 文件以合并已翻译的内容。 本主题并未详尽涵盖所有内容,但是您应该通过它掌握了使用 LocBaml 对应用程序进行本地化所必需的知识。
-
发表评论
-
wpf开源项目
2019-12-03 11:35 584SharpDevelop SharpDevelop是一款用 ... -
wpf datagrid样式
2014-12-23 22:42 1026http://www.iringo.cn/wpf-datag ... -
WPF 的全球化
2010-10-06 00:40 1360本主题介绍了您在编写面向全球市场的 Windows Pre ... -
WPF 全球化和本地化概述
2010-10-06 00:25 1686当您将自己的产品限制为只能通过一种语言使用时,您便将潜在的 ... -
WPF概述一
2010-02-03 10:59 0以前在工作之余学习了WPF,感觉WPF对于软件界面的表现不仅快 ... -
WPF中如何让程序支持国际化
2009-12-23 01:47 1631如果想让我们的应用程序支持多国语言,就像瑞星那么样支持中日英三 ... -
MediaElement详解
2009-12-23 09:32 1989MediaElement:播放器 MediaOpen ... -
WPF电子书
2010-01-18 10:47 1642一些好的电子书 -
WPF开发之mvvm插件
2010-01-18 10:45 1263该插件的使用请参见附件示例 -
WPF开发3D工具类
2010-01-18 10:44 1200请参见附件 -
使用WPFRibbonCTP开发类似于office 2007界面的WPF应用程序
2010-01-18 10:42 1430具体请参见附件 -
MediaElement详解
2009-10-29 14:00 1738MediaElement:播放器 MediaOp ... -
HLSL自定义渲染特效之完美攻略(中)
2009-10-23 15:40 1263通过上一节的解说,大家是否已经对HLSL有了较深刻的认识和理解 ... -
HLSL自定义渲染特效之完美攻略(上)
2009-10-23 15:15 2644Shader Effect中文名称为“渲染特效”或“滤镜”,W ... -
基于像素的图像合成(For Silverlight)
2009-10-23 14:36 1073本节我将为大家讲解如何在Silverlight平台上实现上一节 ... -
基于像素的图像合成(For WPF)
2009-10-23 14:33 2601传统的基于GDI或G ... -
WPF中如何让程序支持国际化
2009-09-18 11:48 1890如果想让我们的应用程序支持多国语言,就像瑞星那么样支持中日英三 ... -
WPF中的依赖属性
2009-09-17 10:57 1925依赖属性 (Dependency Property) ... -
ListBox(CheckListBox)样式
2009-07-31 11:42 2711样式代码: <Application.Resour ... -
wpf仿vista得玻璃效果按钮
2009-07-31 10:07 4809仿vista玻璃效果的按钮样式: <Style x ...
相关推荐
·开发实用的应用程序,带您实际了解导航、本地化和开发; ·探讨WPF提供的高级用户界面控件; ·分析如何在WPF中管理文档,涵盖了文本布局、打印和文档打包等所有技术; ·使用图形和多媒体来增强应用程序...
可本地化C#,VB.NET Winforms, Silverlight以及WPF应用程序。其还支持ResX以及二进制资源库进行本地化。 -在原工程中翻译帮助文件。对翻译记录的共享加快了工作进度,减少了该过程中与翻译软件的通讯,时间与经济上...
本文介绍如何以一种非常简单且可重用的方式在WPF控件或应用程序中添加绑定到枚举的Combobox。
使用一种语言的多个Resource.resx文件(资源管理器)进行WPF本地化。 如果只想对文本进行本地化,而发现太大而不能满足您的需要,则可以将其用作“一个文件”替代方案,它可以对字符串(而不是图像)进行本地化。 它...
它具有使用人类可读的Excel文件或传统的Resources(.resx)文件对WPF应用程序进行本地化的能力。安装可以通过安装WPF-GUI-Localizer库。 此外,还必须安装.NET Framework 4.7.2或更高版本以及Excel。试用图书馆您...
如果您想让自己的应用程序被全球用户所接受,那么对产品进行经济而有效的本地化将是赢得更多客户的最好、最经济的方法 項目名稱為WPF_LanguageSample.csproj 用文本打開 WPF_LanguageSample.csproj 添加 ...
本地化的WPF应用程序模板,用于轻松地本地化WPF应用程序
.net库,可以帮助您管理应用程序中的本地化。 要在您的项目中使用它,Mafe.Localization NuGet包表示一个基础库。 使用Wpf Windows,必须安装Mafe.Localization.Windows库: 使用Xamarin可以安装Mafe....
质量:扫描版,有书签,...开发实用的应用程序,带您实际了解导航、本地化和开发 探讨WPF提供的高级用户界面控件 分析如何在WPF中管理文档,涵盖了文本布局、打印和文档打包等所有技术 使用图形和多媒体来增强应用程序
控件以英语,法语,俄语,波兰语,葡萄牙语和中文进行了本地化 :star: 您要说谢谢还是像项目一样? Hexeditor控件是完全免费的,可在您想要的所有项目中使用,例如开源和商业应用程序。 我会在业余时间做到这一点...
7.4.2 使应用程序为本地化做好准备 194 7.4.3 管理翻译过程 195 7.5 小结 200 第8章 元素绑定 201 8.1 将元素绑定到一起 201 8.1.1 绑定表达式 202 8.1.2 绑定错误 203 8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 ...
7.4.2 使应用程序为本地化做好准备 194 7.4.3 管理翻译过程 195 7.5 小结 200 第8章 元素绑定 201 8.1 将元素绑定到一起 201 8.1.1 绑定表达式 202 8.1.2 绑定错误 203 8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 ...
11.2.2 使应用程序为本地化 做好准备 270 11.2.3 翻译过程 271 11.3 对象资源 276 11.3.1 资源集合 276 11.3.2 资源层次 277 11.3.3 静态资源和动态资源 279 11.3.4 非共享资源 280 11.3.5 通过代码访问资源...
质量:清晰扫描版,有...开发实用的应用程序,带您实际了解导航、本地化和开发 探讨WPF提供的高级用户界面控件 分析如何在WPF中管理文档,涵盖了文本布局、打印和文档打包等所有技术 使用图形和多媒体来增强应用程序
为XAML和代码隐藏中的WPF应用程序本地化提供解决方案
11.2.2 使应用程序为本地化 做好准备 270 11.2.3 翻译过程 271 11.3 对象资源 276 11.3.1 资源集合 276 11.3.2 资源层次 277 11.3.3 静态资源和动态资源 279 11.3.4 非共享资源 280 11.3.5 通过代码访问资源 280 ...
一个简单的库,使WPF本地化更加容易。 产品特点 使用{l:Localize Title1}的简单扩展 处理可绑定键{l:Localize Key={Binding TitleKey}} 在未提供或找不到密钥时处理备用密钥(ControlName_PropertyName,例如Button...
使用内联文本而不是资源文件本地化WPF应用程序
要在本地文件夹中初始化git,请打开命令提示符,输入“ git init” 添加和下载文件 在本地复制和连接存储库,以便您可以推送所做的更新并提取其他所做的更改。 在命令行中输入git clone和存储库URL: 怎么跑 在...
BMP图像格式多页TIFF图像屏幕截图选择框文件拖放从剪贴板粘贴图像对越南语进行后处理以提高准确率越南文输入法多种语言的本地化用户界面() 集成扫描支持监视文件夹监视器以支持批处理后处理中的自定义文本替换使用...