《Programming WPF》翻译 第6章 4.应用程序全球化

如果你打算发布你的应用程序到全球各地,你可能需要为不同地区的用户界 面准备不同的版本。至少,这需要解决将文本翻译成适当的语言;同样需要解决 UI改变的问题。你可能需要特定的外观适应为本地化的文化习俗。或者,你可能 会发现原始的外观在翻译后并不能正常工作,因为词的长度是不一样的。(虽然 WPF的外观体系避免了这一问题,更易于创建更弹性的外观。)

为你的软件在不同的市场创建不同的版本是可能的。尽管如此,更加普遍的 办法是创建一个单独的版本来适应于不同的场所,通过在运行期选取一个合适的 资源文件。WPF的底层架构ResourceManager可以相当直接地使用这个办法。

Microsoft对本地化和全球化加以区别。本地化是一个支持一个应用程序在意 个特定的场所使用的过程,通过创建特定文化的资源如文本的翻译。全球化是一 个确保一个应用程序可以被本地化而不用编译的过程。使用ResourceManager可 以帮助我们对应用程序进行全球化,因为这个类的在运行期选择的资源支持一个 单独的应用程序版本通过提供合适的资源进行本地化。更多信息请参考微软国际 站点http://msdn.microsoft.com/library/default.asp?url=/library/en- us/vbcon/html/vboriInternationalization.asp (http://shrinkster.com/6m9).

当一个ResourceManager被要求按名称获取资源流时,首先它要决定使用哪种 文化。文化时语言与区域的合称,被典型地表示为一个短字符串。例如,en-US 表示在美国使用的英语。而en-GB则代表在英国使用的英语。前两个字母表明语 言,后两个表示区域。同时指明语言和区域是因为即使两种文化共用一种语言, 在方言和习语上还是有差别的。例如,本书的作者之一来自en-GB,因此喜欢使 用color而不是colour。

ResourceManager的GetStream方法使用一个CultureInfo对象作为参数。如果 你想使用用户最终配置过的文化,你可以从Thread.CurrentThread的 CurrentUICulture属性重新获取一个CultureInfo对象。

虽然可执行体经常将资源编译到其中,ResourceManager仍然会先寻找指定文 化的资源,在求诸于内嵌资源之前。首先会在包含应用程序目录的子目录中按文 化名称搜索。因此,如果你的应用程序运行在French-Canadian的文化上,会在 名为fr-CA的子目录中寻找一个叫做MyApp.resources.dll的文件,这里MyApp是 应用程序或组件的名称。如果不存在,会接着在寻找名为fr的目录寻找相同的文 件。这意味着一旦你的翻译预算并不扩展到为全世界所有使用法语的不同区域产 生不同的版本,你可以取代的提供一套单独的法语资源,专门用于使用法语的区 域。如果这些子目录都不存在这个文件,它将求助于使用内嵌资源。

这些被ResourceManager寻找的DLL资源称为全球化编译资源,命名的原因是 这些资源都是很小的资源,聚集为一个大的编译集。

注意到,一旦你提供了一个全球化编译集,你就不需要提供所有资源的本地 化版本。这样那些内嵌在你的主编译集的资源对于所有资源都是很是的。例如, 图6-6中的应用程序有一个内嵌的bmp文件Sunset.jpg。世界大部分都会有日落, 所以你仍可能需要为南极和北极的版本做特殊的工作。基本的Sunset.jpg可以为 大多数文化使用。这将要浪费空间对于每个全球化资源都要获取同一张图片的副 本。幸运的是,这不是必须的。如果一个特定的命名资源在全球化编译资源中并 不存在,ResourceManager将会回到内嵌资源中来。

你可以把全球化编译资源想象为仅包含内嵌资源和目标文化所需资源之间的 差别。任何普通的资源都单独位于主编译集中。一个特定语言但不限区域的编译 集所在的子目录(如fr子目录),包含不同于特定语言的所需资源。而且,完全 特定文化的子目录(如fr-CA,fr-FR,fr-BE等)包含那些需要考虑当地习语的 资源(在这里的上下文中,“资源”是一个通过ResourceManager重新获得的流 ,而不是通过ResourceDictionary重新获取到的对象)

时间: 2024-08-01 20:35:21

《Programming WPF》翻译 第6章 4.应用程序全球化的相关文章

《Programming WPF》翻译 目录

原文:<Programming WPF>翻译 目录 注:第1.2章我只做了笔记,没有翻译,请大家阅读时注意. 还有就是,这本书的英文版本下载:[O'Reilly] Programming Windows Presentation Foundation (2005) - BBL 以下是这本书的目录: 1.Hello, WPF     1.1 WPF from Scratch 基础     1.2 Navigation 导航     1.3 属性元素     1.4 布局     1.6 数据绑定

c语言-c primer plus第三章第一个程序rhodium.c“1磅=14.5833盎司”是错的?

问题描述 c primer plus第三章第一个程序rhodium.c"1磅=14.5833盎司"是错的? 我上网查了好多,都是1磅=16盎司,这是意味着书错了么? 还有中文版的书翻译错了 pound科学正确的翻译是"英镑"和"磅"(我查字典时没有"英磅"这个词,百度了好久,这是我根据查资料推断出来的,不知道对不对),这样说对么? 这张图片是不是说明这条好搜字条编辑的有误? 解决方案 http://zhidao.baidu.c

VSTO学习笔记(七)基于WPF的Excel分析、转换小程序

原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然后进行转换.   概述 小程序主界面如下: 首先选择一个日期和类别,从命名上对待分析的Excel文件进行过滤.点击[浏览]选择待分析的Excel文件所在的目录, 程序中会获取所有子目录.然后点击[执行分析]就会按照左边CheckBox中的选择进行分析,分析结果显示在每一行中间.[修改配置]可以对分析

WPF 自己动手来做安装卸载程序

原文:WPF 自己动手来做安装卸载程序 前言 说起安装程序,这也许是大家比较遗忘的部分,那么做C/S是小伙伴们,难道你们的程序真的不需要一个炫酷的安装程序么?   声明在先 本文旨在教大家以自己的方式实现安装,至于炫酷部分概不负责.   剖析 我们经常安装形形色色的程序,而碰到的安装步骤基本可概括为一下几种 1,欢迎界面 - 无剖析可言 2,选择路径页 - 无剖析可言 3,安装页 - 包括解压.添加注册表 4,完成页 - 创建快捷方式.开机启动.运行 根据实际使用不同适当修改. 经过剖析我们发现

《C和C++程序员面试秘笈》——第1章 C/C++程序基础

第1章 C/C++程序基础 C和C++程序员面试秘笈作为程序员,你在求职时,公司会询问你的项目经验,例如你做过什么类型的项目.担任的是何种角色,以及做项目时如何与他人沟通,等等.除此之外,当然还要考查你的编程能力.这里包括你的编程风格,以及你对于赋值语句.递增语句.类型转换.数据交换等程序设计基本概念的理解.因此,最好在考试之前复习这些程序设计的基本概念,并且要特别重视那些比较细致的考点问题.本章列出了一些涉及C/C++程序设计基本概念的考题,希望读者在读完后能有所收获.

《Python语言程序设计》——第一部分 程序设计基础 第1章计算机、程序和Python概述1.1 引言

第一部分 程序设计基础 第1章 计算机.程序和Python概述学习目标 演示对计算机硬件.程序和操作系统的基本理解(第1.2-1.4节). 描述Python的历史(第1.5节). 解释Python程序的基本语法(第1.6节). 编写和运行一个简单的Python程序(第1.6节). 解释恰当的程序设计风格和文档的重要性,并提供相应的实例(第1.7节). 解释语法错误.运行时错误和逻辑错误之间的区别(第1.8节). 使用Turtle创建一个基本的图形程序(第1.9节). 1.1 引言 关键点:本书的

想用C# wpf做一个多语言切换的程序,要求是可以拷贝语言文件到程序的某个文件夹下,点击程序的语言菜单就会显示出可以切换到这种语言。

问题描述 想用C#wpf做一个多语言切换的程序,要求是可以拷贝语言文件到程序的某个文件夹下,点击程序的语言菜单就会显示出可以切换到这种语言.语言文件是由自己生成的.比如拷贝阿拉伯语言文件,运行程序后,语言下拉菜单就显示多出一个阿拉伯,点击就可以动态切换到阿拉伯语,我想问现在用什么方法做这个好啊.求大虾们指点. 解决方案 解决方案二:参阅上述网页解决方案三:嗯,我先看看

《Programming WPF》翻译 第9章 5.默认可视化

虽然为控件提供一个自定义外观的能力是有用的,开发者应该能够使用一个控件而不用必须提供自定 义可视化.这个控件应该正好工作,当以它最直接的方式使用时.这意味着控件应该提供一组默认的值. 这些默认的可视化存储在组件的二进制资源中,使用的源文件为theme"generic.xaml.如果你在 Visual Studio 2005中创建了一个WPF 控件库的工程,这将自动添加这个文件到你的工程中,并且设置它 的Build Action为作为资源内嵌.(参见第6章获取更多关于如何在组件中编译xaml资源的

《Programming WPF》翻译 第9章 4.模板

对一个自定义元素最后的设计考虑是,它是如何连接其可视化的.如果一个元素直接从 FrameworkElement中派生,这将会适当的生成它自己的可视化.(第7章描述了如何创建一个图形外观. )尤其是,如果你创建了一个元素,是为了提供一个特定的可视化表现,该元素应该完全控制这个可视化 是如何管理的,一旦你编写了一个控件,通常你不会将一个图形硬编码到里面. 记住,一个控件的工作是提供行为.可视化是由控件模板提供的.这种可视化是由控件模板提供的. 一个控件可能提供一组默认的可视化,而应允许这些可视化被替