- 浏览: 666948 次
- 性别:
- 来自: 石家庄
文章分类
最新评论
-
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 648SharpDevelop SharpDevelop是一款用 ... -
wpf datagrid样式
2014-12-23 22:42 1078http://www.iringo.cn/wpf-datag ... -
WPF 的全球化
2010-10-06 00:40 1412本主题介绍了您在编写面向全球市场的 Windows Pre ... -
WPF 全球化和本地化概述
2010-10-06 00:25 1726当您将自己的产品限制为只能通过一种语言使用时,您便将潜在的 ... -
WPF概述一
2010-02-03 10:59 0以前在工作之余学习了WPF,感觉WPF对于软件界面的表现不仅快 ... -
WPF中如何让程序支持国际化
2009-12-23 01:47 1691如果想让我们的应用程序支持多国语言,就像瑞星那么样支持中日英三 ... -
MediaElement详解
2009-12-23 09:32 2034MediaElement:播放器 MediaOpen ... -
WPF电子书
2010-01-18 10:47 1713一些好的电子书 -
WPF开发之mvvm插件
2010-01-18 10:45 1323该插件的使用请参见附件示例 -
WPF开发3D工具类
2010-01-18 10:44 1269请参见附件 -
使用WPFRibbonCTP开发类似于office 2007界面的WPF应用程序
2010-01-18 10:42 1478具体请参见附件 -
MediaElement详解
2009-10-29 14:00 1762MediaElement:播放器 MediaOp ... -
HLSL自定义渲染特效之完美攻略(中)
2009-10-23 15:40 1320通过上一节的解说,大家是否已经对HLSL有了较深刻的认识和理解 ... -
HLSL自定义渲染特效之完美攻略(上)
2009-10-23 15:15 2692Shader Effect中文名称为“渲染特效”或“滤镜”,W ... -
基于像素的图像合成(For Silverlight)
2009-10-23 14:36 1113本节我将为大家讲解如何在Silverlight平台上实现上一节 ... -
基于像素的图像合成(For WPF)
2009-10-23 14:33 2644传统的基于GDI或G ... -
WPF中如何让程序支持国际化
2009-09-18 11:48 1933如果想让我们的应用程序支持多国语言,就像瑞星那么样支持中日英三 ... -
WPF中的依赖属性
2009-09-17 10:57 1966依赖属性 (Dependency Property) ... -
ListBox(CheckListBox)样式
2009-07-31 11:42 2765样式代码: <Application.Resour ... -
wpf仿vista得玻璃效果按钮
2009-07-31 10:07 4863仿vista玻璃效果的按钮样式: <Style x ...
相关推荐
LocBaml工具就是专门为WPF应用提供本地化支持的一个实用程序。 LocBaml是一个命令行工具,它允许开发者提取、生成、合并以及验证资源文件,这些资源文件用于在WPF应用中实现本地化。它的主要功能包括: 1. **资源...
WPF(Windows Presentation Foundation)是微软开发的一种图形用户界面框架,它是.NET Framework的重要组成部分,用于构建丰富的、交互式的桌面应用程序。本压缩包“WPF-Samples-master”包含了多个关于WPF的实际...
在.NET框架中,Windows Presentation Foundation(WPF)提供了一种强大的机制来实现应用程序的国际化(Internationalization)和本地化(Localization),使得软件可以适应不同国家和地区的语言需求。本篇文章将深入...
WPF 通过 **PackURI** 的概念来支持对这些文件的访问,允许开发者以统一的方式引用这些文件,无论它们是存储在应用程序的本地文件系统还是打包在程序集中。 #### 三、WPF 中的 PackURI **PackURI** 是 WPF 中用于...
在“测试WPF应用程序”这个主题中,我们将深入探讨如何对WPF应用进行有效的测试。 **1. WPF应用程序结构** WPF应用通常由XAML(Extensible Application Markup Language)文件定义用户界面,与C#或VB.NET等后台...
除了使用工具,还可以通过以下方式优化WPF本地化: - **使用字符串字典**:使用`StringDictionary`类管理动态内容,使文本更容易翻译。 - **分离UI和逻辑**:遵循MVVM模式,将视图与模型解耦,使本地化工作更专注...
1. **XAML**:XAML是一种XML标记语言,用于描述WPF应用程序的用户界面和行为。它允许开发者通过声明式语法创建控件、布局和样式。 2. **数据绑定**:WPF的数据绑定机制使UI元素能够与应用程序的业务逻辑自动同步,...
**WPF应用程序(.Net Framework 4.8) 国际化** 在开发Windows Presentation Foundation (WPF) 应用程序时,实现国际化是一项关键任务,它允许软件在全球范围内支持多种语言,提供更好的用户体验。.Net Framework 4.8...
本文将详细介绍如何在WPF应用程序中实现自动更新功能,主要参考了圣殿骑士自动更新组件的改编版。 **1. 自动更新组件的选择与理解** "圣殿骑士自动更新组件"是一个开源项目,它为.NET应用程序提供了方便的自动更新...
在WPF应用程序管理中,核心组件是`System.Windows.Application`类,它负责管理应用程序的生命周期、资源和窗口。下面将详细解析WPF应用程序的创建、启动、关闭策略以及其他关键特性。 ### 一、WPF应用程序的创建与...
WPF提供了内置的多语言支持,通过ResourceDictionary和culture设置,开发者可以轻松实现应用程序的国际化和本地化。 10. **集成硬件加速** WPF利用硬件加速来提升图形渲染性能,尤其在处理大量图形和动画时,能...
在Windows Presentation Foundation (WPF) 中,国际化...通过理解并掌握以上知识点,开发者可以构建出真正全球化、具有强大本地化能力的WPF应用程序,提供一致且友好的用户体验,无论用户位于世界何处。
在实际项目中,这通常是一个WPF应用程序的启动类,包含了对Prism框架的初始化,如定义Shell窗口、注册模块以及配置Unity容器等。 综上所述,"WPF Prism MVVM弹窗及国际化小示例"是一个涵盖基础功能和高级特性的应用...
- **可扩展应用程序标记语言 (XAML)**:这是一种用于描述用户界面的XML标记语言,它可以描述WPF应用程序的界面结构和外观。 - **控件**:WPF提供了丰富的控件集合,如按钮、列表框等,这些控件支持各种复杂的用户...
12. **性能优化**:了解如何优化WPF应用程序的性能,包括减少内存消耗、利用硬件加速、正确使用Dispatcher和异步操作等,是成为WPF专家的重要环节。 通过阅读《WPF自学手册》和《WPF高级编程》,读者将能够从基础到...
总的来说,通过结合使用资源文件、自定义转换器和WPF数据绑定,我们可以轻松地在WPF应用中实现枚举的本地化,为用户提供更友好的界面。这个方法不仅适用于ComboBox,也可以应用于其他需要显示枚举值的控件,如...
在WinForm应用中,你可以通过以下步骤实现本地化: 1. 创建资源文件:在Visual Studio中,右键点击项目,选择“添加”-> “新项”,然后选择“资源文件”。为每种语言创建一个资源文件,并在每个文件中添加相应的UI...
4. 使用XAML进行本地化: - 在XAML中,可以使用`StaticResource`标记扩展来引用资源,例如:`<TextBlock Text="{StaticResource WelcomeMessage}" />`。 - 当改变`Thread.CurrentThread.CurrentUICulture`时,WPF...
8. **本地化和国际化**:了解如何使应用程序适应不同语言和地区。 9. **源代码实践**:结合书中的源代码,进行实战演练,加深理解和应用。 总的来说,"WPF程序设计指南"是一本全面而深入的教程,无论是对WPF新手...