`
jiasongmao
  • 浏览: 647688 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

WPF 的全球化

    博客分类:
  • WPF
阅读更多

本主题介绍了您在编写面向全球市场的 Windows Presentation Foundation (WPF) 应用程序时应注意的问题。 Microsoft .NET 的 System.Globalization 中定义了全球化编程元素。

本主题包括下列各节。

XAML 全球化

可扩展应用程序标记语言 (XAML) 基于 XML,并采用在 XML 规范中定义的全球化支持。 以下各节介绍了一些您应了解的 XAML 功能。

字符引用

字符引用使用十进制或十六进制的形式指定它表示的特定 Unicode 字符的数字。 下面的示例演示十进制字符引用。

Ϩ

此示例演示十六进制字符引用。 请注意,十六进制数的前面带有一个 x

Ϩ

编码

XAML 支持的编码有 ASCII、Unicode UTF-16 和 UTF-8。 编码语句位于 XAML 文档的开头。 如果不存在编码特性,并且没有任何字节顺序,则分析器默认为 UTF-8。 UTF-8 和 UTF-16 都是首选编码。 不支持 UTF-7。 下面的示例演示如何在 XAML 文件中指定 UTF-8 编码。

?xml encoding="UTF-8"?

语言特性

XAML 使用 xml:lang 来表示元素的语言特性。 若要使用 CultureInfo 类,语言特性值应为 CultureInfo 预定义的区域性名称之一。 xml:lang 在元素树中可按 XML 规则继承(但并不一定这样继承,因为存在依赖项属性继承);在未明确赋值的情况下,其默认值为空字符串。

语言特性对指定方言非常有用。 例如,法语在法国、魁北克、比利时和瑞士的拼写、词汇和发音各不相同。 此外,中文、日语和朝鲜语虽然具有相同的 Unicode 码位,但表意图形各不一样,并使用完全不同的字体。

以下可扩展应用程序标记语言 (XAML) 示例使用 fr-CA 语言特性指定加拿大法语。

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
 

Unicode

XAML 支持所有 Unicode 功能(包括代理项)。 只要能将字符集映射到 Unicode,则支持该字符集。 例如,GB18030 中引入了某些可映射到中日韩 (CJK) 扩展 A 和 B 以及代理项对的字符,因此完全受支持。 WPF 应用程序可使用 StringInfo 操作字符串,而无需知道它们是否具有代理项对或组合字符。

使用 XAML 设计国际用户界面

本节说明编写应用程序时应考虑的用户界面 (UI) 功能。

国际化文本

WPF 包含对所有 Microsoft .NET Framework支持的书写系统的内置处理。

下面是当前支持的脚本:

  • 阿拉伯语

  • 孟加拉语

  • 梵文

  • 西里尔语

  • 希腊语

  • 古吉拉特语

  • 古尔木其文

  • 希伯来语

  • 表意文字脚本

  • 卡纳达语

  • 老挝语

  • 拉丁语

  • 马拉雅拉姆语

  • 蒙古语

  • 奥里雅语

  • 叙利亚语

  • 泰米尔语

  • 泰卢固语

  • 塔纳文

  • 泰语*

  • 藏语

*此版本中支持显示和编辑泰语,但不支持断词。

当前不支持的脚本包括:

  • 高棉文

  • 古朝鲜语

  • 缅甸语

  • 僧伽罗文

所有书写系统引擎都支持 OpenType 字体。 OpenType 字体可以包含 OpenType 布局表格,该布局表格可使字体创建者更好地设计国际化的高端版式字体。 OpenType 字体布局表格包含有关标志符号替换、标志符号定位、论证、基线定位和启用文本处理应用程序以改进文本布局的信息。

通过 OpenType 字体,可以使用 Unicode 编码来处理大型标志符号集。 这种编码享有广泛的国际支持,并支持版式变体标志符号。

WPF 文本呈现使用 Microsoft ClearType 子像素技术,该技术支持分辨率独立性。 这极大地提高了可读性,并为所有脚本提供了支持高质量杂志样式文档的功能。

国际化布局

WPF 提供了一种支持水平、双向和垂直布局的简便方式。 在演示框架中,FlowDirection 属性可以用来定义布局。 流方向模式包括:

  • LeftToRight - 适用于拉丁语和东亚语言等语言的水平布局。

  • RightToLeft - 适用于阿拉伯语和希伯来语等语言的双向布局。

开发可本地化的应用程序

在编写全球使用的应用程序时,应牢记应用程序必须可本地化。 以下主题指出了若干注意事项。

多语言用户界面

多语言用户界面 (MUI) 是由 Microsoft 提供的对在不同语言之间切换 UI 的支持。 WPF 应用程序使用程序集模型来支持 MUI。 一个应用程序包含非特定语言程序集和与语言相关的附属资源程序集。 入口点是主程序集中的托管 .EXE。 WPF 资源加载程序采用 框架 的资源管理器来支持资源查找和回退。 多个语言附属程序集可同时与同一主程序集一起工作。 加载的资源程序集取决于当前线程的 CurrentUICulture

可本地化的用户界面

WPF 应用程序使用 XAML 定义其 UI。 XAML 使开发人员可以使用一组属性和逻辑指定对象的层次结构。 XAML 主要用于开发 WPF 应用程序,但也可用于指定任何公共语言运行时 (CLR) 对象的层次结构。 大多数开发人员使用 XAML 指定其应用程序 UI,并使用诸如的 C# 的编程语言响应用户交互。

从资源方面来看,为描述与语言相关的 UI 而专门设计的 XAML 文件属于资源元素范畴,因此,其最终分发格式必须可本地化,以支持国际语言。 由于 XAML 无法处理事件,因此,许多 XAML 应用程序都包含用于执行此操作的代码块。 有关更多信息,请参见 XAML 概述 (WPF) 将 XAML 文件标记到二进制 XAML (BAML) 中时,会剥除代码并将其编译到不同的二进制文件中。 BAML 文件、图像以及其他类型的托管资源对象将被嵌入到附属资源程序集中(该程序集可以本地化为其他语言),如果不需要进行本地化,以上各项将被嵌入到主程序集中。

说明说明

WPF 应用程序支持所有 框架 CLR 资源(包括字符串表、图像等)。

生成可本地化的应用程序

本地化意味着根据不同的区域性对 UI 进行改编。 若要使 WPF 应用程序可本地化,开发人员需要将所有可本地化的资源生成为一个资源程序集。 该资源程序集本地化为不同语言,代码隐藏功能使用资源管理 API 来进行加载。 WPF 应用程序所需的文件之一是项目文件 (.proj)。 您在应用程序中使用的所有资源都应包括在项目文件中。 下面的 .csproj 文件示例演示如何执行此操作。

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
 

若要使用应用程序中的资源,请实例化一个 ResourceManager 并加载要使用的资源。 下面的示例演示如何执行此操作。

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}
 
在已本地化的应用程序中使用 ClickOnce

ClickOnce 是 Microsoft Visual Studio 2005 附带的新 Windows 窗体部署技术。 通过该技术可以进行应用程序安装和 Web 应用程序升级。 对使用 ClickOnce 部署的应用程序进行本地化之后,只能在本地化的区域性中查看该应用程序。 例如,如果将已部署的应用程序本地化为日语,则只能在日语版的 Microsoft Windows 上查看该应用程序,而不能在英语版的 Windows 上查看。 由于日语用户经常运行英语版本的 Windows,因此这常常会出现问题。

该问题的解决方案是设置非特定语言回退特性。 应用程序开发人员可以选择从主程序集中移除资源,并指定可在特定区域性对应的附属程序集中找到该资源。 若要控制此过程,请使用 NeutralResourcesLanguageAttribute NeutralResourcesLanguageAttribute 类的构造函数包含两个签名,其中一个签名使用 UltimateResourceFallbackLocation 参数指定 ResourceManager 应在主程序集还是附属程序集中提取回退资源。 下面的示例演示如何使用此特性。 对于最终回退位置,该代码将导致 ResourceManager 在当前执行程序集的目录的“de”子目录中查找资源。

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

 

 

 

 

分享到:
评论

相关推荐

    WPF 全球化LocBaml.exe工具

    wpf国际化本地化多语言 当您将自己的产品限制为只能通过一种语言使用时,您便将潜在的客户群限制为全球 65 亿人口中的一小部分。如果您想让自己的应用程序被全球用户所接受,那么对产品进行经济而有效的本地化将是...

    使用RESX文件进行WPF本地化

    使用标准RESX文件本地化文本,图像和任何其他WPF属性

    Essential Studio Enterprise Edition试用版:一款功能强大的界面套包产品,支持WinForm、WPF、Silve

    Essential Studio Enterprise Edition是一款全球顶级的界面控件套包产品,包含了表格、图表、仪表、地图、联机分析处理、工具栏和菜单等多达660+界面子控件,横跨多种开发平台:Asp.net、MVC、JavaScript、WinForm、...

    软件本地化工具 Sisulizer Enterprise Edition 4.0 Build 374 中文免费.zip

    Sisulizer Enterprise Edition 是为大企业以及日益全球化的软件公司提供的最佳软件本地化工具。其可广泛的应用于服务器数据库的本地化,Web应用程序的本地化以及使用共享的译码存储系统。通过使用我们提供的命令行...

    C# PO实现多国语言翻译

    编写跨系统应用程序乱码是最让人头疼的问题,C++ PO方式的应用很好的解决了这个问题,但是对C#支持不是很好,但是通过本人的努力研究出了C#对PO支持,相信读者能通过本程序,也知道C#怎样通过PO方式来做跨语言应用。

    DevExpressPatch 8.0 for Visual Studio 2019.rar

    DevExpress是全球顶级的.NET用户界面控件,功能强大,性价比高,示例和帮助文档完善,提供定制、培训、外包、汉化一体化服务。它包含Grid、Chart、 Reporting、Tree-Grid等100多个功能子控件,同时套包内包含Winfrom...

    ActiveReports 报表控件 V11.1历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发工作需求,作为专业的报表开发工具为全球超过 300,000 开发人员提供了全面的...

    ActiveReports 报表控件 V11.2历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发工作需求,作为专业的报表开发工具为全球超过 300,000 开发人员提供了全面的...

    ActiveReports 报表控件 V11历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发工作需求,作为专业的报表开发工具为全球超过 300,000 开发人员提供了全面的...

    ActiveReports 报表控件 V12.2历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发工作需求,作为专业的报表开发工具为全球超过 300,000 开发人员提供了全面的...

    ActiveReports 报表控件 V10历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发工作需求,作为专业的报表开发工具为全球超过 300,000 开发人员提供了全面的...

    DevExpress.rar

    DevExpres15.2 ,全称为DevExpress Universal Subscription,其是全球使用最多的.NET用户界面空间套包,并拥有.NET开发需要的所有平台的空间,包括WinForms、ASP.NET、WPF和Windows 8等。devexpres 15.2开发的控件...

    ActiveReports 报表控件 V13.1历史版本的下载包

    ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和报表开发的需求,作为专业的报表工具为全球超过 300,000 名开发者提供全面的报表解决...

    infragistics Professional试用版:一款全球顶级的用户界面套包控件产品,包含了上百种常用的界面元素

    可以用于Web应用程序、桌面应用程序、WPF和SilverLight以及移动设备和Window 8上,里面覆盖了表格、图表、各种编辑器、报表、菜单、工具栏等上100种常用的界面控件,开发人员可以利用该控件创建复杂的现代化商业智能...

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    · SQLite 用作结构化的数据存储 · 多媒体支持 包括常见的音频、视频和静态图像格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) · GSM 电话技术 (依赖于硬件) · 蓝牙Bluetooth, EDGE, 3G, 和 WiFi ...

    在线订票系统源码(毕业设计_C#+SQL)_TicketWeb

    具体要求:***********尽量做的简单化 别用CSS技术以及自定义控件 别用脚本语言 我们看不懂 达到我们学生初级初级水平****** 在线售票系统(毕业设计) 系统设置:密码修改 增加用户(权限) [打印机设置 票样打印...

Global site tag (gtag.js) - Google Analytics