原文 Windows Phone 8初学者开发—第7部分:本地化应用程序

第7部分:本地化应用程序

原文地址:

http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-7-Localizing-the-App

系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners

源代码: http://aka.ms/absbeginnerdevwp8 
PDF文件: http://aka.ms/absbeginnerdevwp8pdf

在本课中我将解释如何本地化您的应用,也就是说我们可以在您的应用程序中呈现不同语言的文本。例如,我需要同时支持英语和西班牙语的用户以开辟潜在的销售应用程序的市场。现在在不同的市场有了更多的销售而不是局限在本地市场,这是朝着正确方向迈出的一大步。

本课的计划是:

  1. 我们将学习在AppResources.resx文件中存储名称/值对以及在声明式的XAML代码(或命令式的C#代码)中访问它们。
  2. 我们将看到在Visual Studio中如何创建针对特定语言和区域的文件。
  3. 我们将学习Windows Phone 8操作系统如何基于用户的语言和区域来选择正确版本的AppResouces.resx文件。

1. 修改AppResources.resx设置并绑定到它的值

如果您展开PetSounds项目的Resource文件夹,您将会看到一个称为AppResources.resx的文件:

如果您双击并打开它,它将会在一个特别的设计器的主区域中被打开:

该文件是一系列的名称/值对。左侧是我们将要绑定的设置名称。右侧是给定语言的设置。哪种语言?请查看最后的属性。

资源语言(ResourceLanguage)

被设置为:

en-US

"en" 的意思是"English"。"US"是指区域,在这里的意思是”USA”。因此,这些设置用于讲英语的美国用户。它也是默认的AppResources文件(您将很快会看到默认和我们支持的其他语言/区域之间的区别)。

名称/值对主要是我们在应用程序中使用的文本片段。但是“资源流动方向(ResourceFlowDirection)”是有关字符应该往哪个方向呈现的设置。正如您所知道的,一些语言的阅读习惯是从右向做,该设置在应用程序中被用于这个目的。

正如您所看到的,ApplictionTitle设置被设为"MY APPLICATION"。如果我想把MainPage.xaml中的TextBlock转换为使用AppResources中的设置应该怎么做?我将使用如下的绑定表达式:

正如您所看到的,我将硬编码的文本替换为以下的绑定表达式:

Text="{Binding Path=LocalizedResources.ApplicationTitle,Source={StaticResource LocalizedStrings}}"

接下来需要进行一些背景方面的解释。现在只要知道我们正在使用绑定表达式将数据绑定到属性(文本)。绑定表达式中的Path属性是指项目中的 LocalizedStrings.cs文件。它创建了一个AppResources对象的实例,这个实例为我们提供了对基于区域和手机用户首选语言的 AppResource文件的访问。我们马上就会看到他们是如何一起工作的。.ApplicationTitle指向AppResources.resx 文件中的特定名称入口。Source属性绑定到LocalizedStrings,编译器通过LocalizedStrings可以找到 LocalizedResources属性,该属性是LocalizedStrings.cs文件中LocalizedStrings类的一部分。

为了获取这些内容是如何相互关联的更加深入的讨论,您可以参考MSDN上的这篇文章:

http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff637520(v=vs.105).aspx

2. 添加对第二语言的支持

现在我们只支持英语(美国)。无论用户在世界的哪个区域,我都想支持西班牙语。要做到只一点:

  1. 在解决方案资源管理器中,右键单击项目标题PetSounds
  2. 在上下文菜单中选择”属性(Properties)”

项目属性设计器将会出现,并且左侧的应用程序(Application)选项卡已被选中(如果未选中则选中它)

在“支持的区域性(Supported Cultures)”下,选择“西班牙语(Spanish)”。

然后保存项目并关闭项目属性选项卡。根据当前加载到Visual Studio主要区域的内容,您有可能将会看到以下消息:

如果看到它,您可以单击"是"按钮。

现在在Resources文件夹中将会出现一个新的文件:

AppResources.es.resx

AppResources文件的.es后缀表示西班牙语(es表示”Espanol”)。双击这个文件并打开它:

默认情况下它是英文。在我儿子的帮助下,我将值(Value)从英语翻译为西班牙语。请注意:名称(Name)在英语版本和西班牙语版本的文件中必须相同。不要翻译名称,仅需要翻译值。名称是编程的标识,名称对应的值将显示给最终用户。

3. 测试应用程序的不同语言版本

完成翻译后按F5运行应用程序,使用手机模拟器的启动按钮,然后从右向左轻扫以进入按字母顺序排列的应用程序列表,并向下滚动到设置应用程序,点击并打开它:

在设置应用程序的“系统”页面,向下滚动至“语言+区域”并点击该选项:

在“语言+区域”页面,点击手机语言并将“英语(美国)”编辑为:

在语言和区域列表中我选择"espanol (Espana)":

然后滚动到页面底部,您将看到“重新启动手机”按钮。注意消息中的“需要重新启动”提示:

当重新启动后我看到消息“hasta luego”:

此时Visual Studio会断开连接。没关系,您不需要处在Visual Studio中的调试模式,现在仅需要关注手机模拟器。手机模拟器将使用最近一次部署的应用程序版本。

一旦应用程序模拟器启动完毕,您可以轻扫以进入应用程序列表,您会发现他们都是西班牙语了。

点击"PetSounds"应用程序:

当应用程序打开时,您将会发现标题被替换为我们在AppResources.es.resx文件中的输入。

非常棒!现在我只需要重复这些步骤,尤其是在整个应用程序中创建名称/值对并使用绑定表达式以完全本地化应用程序的用户界面。

除非您使用双语,您可能想回溯以上步骤并重置手机模拟器以重新使用英语。或者您可以完全关闭手机模拟器(在Windows任务栏,右键单击并选择关闭),Visual Studio将以缺省值重启手机模拟器。

回顾

综上所述,本课的重点是如何使用AppResources文件、项目属性和一些绑定语法来本地化您的应用程序。我们同时学习了如何设置手机的语言和区域以测试我们的本地化自定义。

Windows Phone 8初学者开发—第7部分:本地化应用程序的更多相关文章

  1. Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

    原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址: http://channel9.msdn.com/Series/ ...

  2. Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式

    原文 Windows Phone 8初学者开发—第13部分:设置LongListSelector中磁贴的样式 第13部分:设置LongListSelector中磁贴的样式 原文地址: http://c ...

  3. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据

    原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...

  4. Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序

    原文 Windows Phone 8初学者开发—第11部分:设置SounBoard应用程序 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8- ...

  5. Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介

    原文 Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...

  6. Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述

    原文 Windows Phone 8初学者开发—第9部分:Windows Phone 8模拟器概述 第9部分:Windows Phone 8模拟器概述 原文地址: http://channel9.ms ...

  7. Windows Phone 8初学者开发—第8部分:理解编译和部署

    原文 Windows Phone 8初学者开发—第8部分:理解编译和部署 第8部分:理解编译和部署 原文地址: http://channel9.msdn.com/Series/Windows-Phon ...

  8. Windows Phone 8初学者开发—第6部分:设置应用程序的样式

    原文 Windows Phone 8初学者开发—第6部分:设置应用程序的样式 Source Code: http://aka.ms/absbeginnerdevwp8  PDF Version: ht ...

  9. Windows Phone 8初学者开发—第5部分:布局和事件基础

    原文 Windows Phone 8初学者开发—第5部分:布局和事件基础 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Developme ...

随机推荐

  1. c++11新特性(4) lambda捕捉块

    lambda表达式中的方括号成为捕捉块,能够在这里指定怎样从所在的作用域中捕捉变量. 捕捉的意思是指能够在该lambda中使用该变量.即能够捕获外部变量在lambda表达式内使用. 能够使用两种方式来 ...

  2. 【方法2】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录

    依据guigui111111的建议:先把Map按Key从大到小排序,然后再把Key和Value互换.这也是一种非常好的思路,我写了一下代码,顺便贴上来,供大家參考与分享. package shuai. ...

  3. HDU3415:Max Sum of Max-K-sub-sequence(单调队列)

    Problem Description Given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left ...

  4. 小猪猪逆袭成博士之C++基础篇(一)数据精度、强制类型转换、变量命名规则

    小猪猪逆袭成博士之C++基础篇(一) 关键词: 数据精度.强制类型转换.变量命名规则 综述: 1.大多数编程语言通过两种方式来进一步补充其特征:一是赋予程序员自定义数据类型的权利(C++中的类):二是 ...

  5. 获取json格式字符串的简单方法

    有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...

  6. 0603 python 基础02

    作业1:ANSI和utf8的区别? ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits). 可以表示的最大字符数是256,一般只用前128个(最高位为0),其中包括 ...

  7. A Byte of Python 笔记(8)

    第10章  解决问题——编写一个 python 脚本 程序功能:为所有重要文件创建备份 设计: 1.需要备份的文件和目录由一个列表指定 2.备份应该保存在主备份目录中 3.文件备份称一个 zip 文件 ...

  8. setTimeout 虚假的“异步”

    看这篇http://www.laruence.com/2009/09/23/1089.html 所以实际上 setTimeout更像是任务按照队列执行  经过setTimeout设置后任务放在了队尾 ...

  9. 怎么给没链接的flash加超链接

    最近开始准备设计一个广告条,本想用阿里妈妈的的banner marker来设计,却遗憾的发现,banner marker已经实行收费模式了. 我不得不启用另一款在线banner生成工具,百度旗下的&q ...

  10. ID卡

    ID卡全称为身份识别卡(Identification Card),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式.美国HIDMOTOROLA等各类ID卡.ID卡与磁卡一样,都仅仅 ...