`
jiasongmao
  • 浏览: 666887 次
  • 性别: 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 亿人口中的一小部分。如果您想让自己的应用程序被全球用户所接受,那么对产品进行经济而有效的本地化将是...

    WPF个性化示例

    8. **多语言支持**:WPF支持本地化和全球化,可以让应用程序根据用户的语言设置显示相应的文本。通过资源文件和`Resx`编辑器,开发者可以轻松实现多语言的个性化。 9. **响应式设计**:WPF的布局系统可以自动适应...

    wpf_国际化

    在Windows Presentation Foundation (WPF) 中,国际化...通过理解并掌握以上知识点,开发者可以构建出真正全球化、具有强大本地化能力的WPF应用程序,提供一致且友好的用户体验,无论用户位于世界何处。

    WPF 国际化.docx

    **WPF国际化的详解** WPF(Windows Presentation Foundation)作为.NET框架的一部分,提供了强大的本地化和国际化支持,使得开发者能够轻松地...理解并掌握WPF的国际化机制,能够让你的应用更好地适应全球用户的需求。

    wpf国际化本地化多语言

    WPF的国际化和本地化功能使得开发者能轻松地构建适应全球市场的应用。通过合理利用资源字典、卫星程序集以及`CultureInfo`,可以有效地实现多语言支持。在设计阶段考虑本地化因素,可以使应用更加友好,覆盖更广泛的...

    WPF本地化程序 LocBaml

    WPF(Windows Presentation Foundation)是微软.NET框架的一部分,主要用于构建丰富的桌面应用程序。在开发多语言应用时,...通过熟练掌握LocBaml的使用,可以大大提高WPF应用的国际化水平,满足全球用户的语言需求。

    WPF本地化工具

    **WPF本地化工具详解** 在Windows Presentation Foundation (WPF)开发中,为了实现应用程序的多语言支持,本地化是一个必不可少的过程。WPF提供了一套完整的框架来支持应用程序的国际化和本地化,允许开发者轻松地...

    WPF自学手册 与 WPF高级编程

    10. **本地化和国际化**:WPF支持应用程序的本地化和国际化,使开发者能够创建面向全球用户的多语言应用程序。 11. **集成其他技术**:WPF可以与WCF(Windows Communication Foundation)、WF(Windows Workflow ...

    wpf 多语言 国际化 demo

    在本文中,我们将深入探讨如何在C# WPF(Windows Presentation Foundation)应用程序中实现多语言支持,即国际化。WPF提供了强大的框架,使得开发者能够轻松地构建能够适应不同语言和地区的应用。 首先,理解“国际...

    WPF应用程序(.Net Framework 4.8) 国际化

    .Net Framework 4.8 提供了强大的支持来帮助开发者创建可全球化和本地化的应用。下面我们将深入探讨如何在WPF中实现国际化。 **1. 资源文件的使用** 在WPF中,我们通常使用资源文件(如.resx)来存储各种语言的文本...

    使用RESX文件进行WPF本地化

    在Windows Presentation Foundation (WPF)应用开发中,本地化是一个重要的功能,它允许软件界面适应不同语言和文化环境。本文将深入探讨如何使用RESX文件进行WPF应用的本地化。RESX文件是一种XML格式,用于存储应用...

    一个漂亮的WPF界面框架

    9. **国际化和本地化**:WPF支持多语言环境,方便开发全球化应用。 在名为"mui-master"的压缩包中,可能包含了这个精美WPF界面框架的源代码、示例项目、文档和资源文件。通过研究这些内容,开发者可以学习到如何...

    WPF语言国际化Demo

    总之,"WPF语言国际化Demo"项目展示了如何利用WPF的特性以及.NET Framework的全球化支持,创建能够适应不同文化和语言的用户界面。通过学习这个示例,开发者可以掌握如何创建多语言的WPF应用程序,提升用户体验。

    xceed.wpf.toolkit库

    4. **国际化的项目**:支持多语言的特性使得Xceed.WPF.Toolkit适合全球化项目。 ### 结论 Xceed.WPF.Toolkit是一个高效、功能丰富的库,能够显著提高WPF开发效率,为开发者提供了一套完整的解决方案,以创建出具有...

    Pro WPF in C Sharp 2008.pdf

    6. **多语言和全球化**:WPF支持多语言和全球化,可以轻松地将应用程序本地化以适应不同地区的用户。 7. **布局系统**:WPF的布局系统可以自动调整UI元素的位置和大小,适应不同的屏幕分辨率和设备。 8. **控件库*...

    WPF项目书籍大合辑

    - **国际化与本地化**:WPF内置支持多语言和文化环境,方便创建全球化应用。 - **打印与打印预览**:WPF提供了打印和打印预览功能,便于开发打印相关的应用。 总之,WPF项目书籍大合辑涵盖了从基础知识到高级技术的...

    WPF海康摄像头程序显示

    海康威视是全球领先的安防产品及解决方案提供商,其摄像头广泛应用于各种场景。C#是.NET Framework的主要开发语言,与WPF结合可以创建功能强大的桌面应用程序。以下我们将详细介绍这一过程的关键知识点。 首先,...

    C#-WPF官方Demo

    - **Globalization and Localization**: WPF提供了强大的全球化和本地化支持,使得应用能够适应不同语言和文化环境。这部分展示了如何设置和管理应用程序的语言和区域设置。 7. **样例应用程序** - **Sample ...

    wpf学习实例.wpf学习实例.rarwpf学习实例.rar

    13. **国际化和本地化**:WPF支持应用程序的全球化和本地化,使软件能够适应不同语言和文化环境。 14. **集成Windows API**:WPF可以与传统的Win32 API进行交互,以利用旧有的Windows功能或兼容性需求。 这个...

Global site tag (gtag.js) - Google Analytics