windows phone 全球化 多语言开发
全球化和本地化
若要将您的应用程序开发为多种语言版本,您需要将应用程序全球化和本地化。您需要实现的大部分全球化和本地化功能已经生成到 .NET Framework 中,通过使用它您可以和任何国家和地区的客户联系。
区域格式数据
指如何为特定区域性设置数字、货币、时间和日期格式。Windows Phone 支持 CultureInfo 类中所列所有区域性的区域格式数据。CultureInfo 类公开属性以便访问某个特定区域性的区域格式数据。
Windows Phone 支持下表中的显示语言。
区域性名称 |
区域性代码 |
Windows Phone OS 7.0 |
Windows Phone OS 7.1 |
简体中文(中国) |
zh-CN |
|
|
繁体中文(台湾) |
zh-TW |
|
|
捷克语(捷克共和国) |
cs-CZ |
|
|
丹麦语(丹麦) |
da-DK |
|
|
荷兰语(荷兰) |
nl-NL |
|
|
英语(美国) |
en-US |
|
|
英语(英国) |
en-GB |
|
|
芬兰语(芬兰) |
fi-FI |
|
|
法语(法国) |
fr-FR |
|
|
德语(德国) |
de-DE |
|
|
希腊语(希腊) |
el-GR |
|
|
匈牙利语(匈牙利) |
hu-HU |
|
|
意大利语(意大利) |
it-IT |
|
|
日语(日本) |
ja-JP |
|
|
朝鲜语(韩国) |
ko-KR |
|
|
挪威语(挪威) |
nb-NO |
|
|
波兰语(波兰) |
pl-PL |
|
|
葡萄牙语(巴西) |
pt-BR |
|
|
葡萄牙语(葡萄牙) |
pt-PT |
|
|
俄语(俄罗斯) |
ru-RU |
|
|
西班牙语(西班牙) |
es-ES |
|
|
瑞典语(瑞典) |
sv-SE |
|
|
更改模拟器的区域语言用于测试UI布局
通过在 Visual Studio 中将 Windows Phone 模拟器指定为目标设备并启动应用程序来启动模拟器。
- 在模拟器中,单击“开始”按钮返回至“开始”屏幕。
- 单击箭头导航至包含应用程序列表的页面。
- 在应用程序列表中选择“设置”。
- 从“系统”菜单中选择“地区和语言”。
- 在“显示语言”列表中,选择所需的语言。
- 单击“点按此处以接受更改并重新启动手机”接受语言更改并重新启动模拟器。
重新启动模拟器时,显示语言将设置为所选语言。若您关闭并重新启动模拟器,则地区和语言设置将设回为其默认值。
字体
Windows Phone 手机上存在两种类型的字体:
- 阅读字体
所有 Windows Phone 手机上都提供这些字体,可以确保用户可以阅读来自世界各地、以任何受支持语言撰写的内容。
- UI 字体
每一种 UI 字体都与特定显示语言相关联。每部手机包含的显示语言,取决于该手机在哪一个市场上销售。例如,在日本销售的手机很可能包含日语显示语言,而在美国销售的手机可能不包含日语显示语言。用户可以在手机上手动切换显示语言。
如果未提供相应的 UI 字体,则使用相应的阅读字体来显示手机上的内容,这将取决于设置的显示语言。
例如,假设手机包含日语和英语两种显示语言选项,并且手机上设置的显示语言是英语。如果应用程序或 UI 元素包含日语文本,则将显示日语阅读字体(而不是 UI 字体),因为没有将日语设置为显示语言。
下表列出了 Windows Phone 手机上所有受支持的 UI 字体。每种字体对特定手机是否可用取决于该手机中包含哪些显示语言。
拉丁语、西里尔文和基于希腊语的语言
所有拉丁语、西里尔文和基于希腊语的语言的显示语言使用 UI 字体 Segoe WP。所有手机上都包含此字体,所以即使将不同的语言(如日语)设置为显示语言,任何拉丁语、西里尔文和基于希腊语的语言文本仍以 Segoe WP UI 字体显示。
所有 Windows Phone 手机上都包含以下 Segoe WP 字体的变体:
- Segoe WP Light
- Segoe WP SemiLight
- Segoe WP
- Segoe WP Semibold
- Segoe WP Bold
- Segoe WP Black
东亚语言
语言 |
字体 |
常规 |
加粗 |
简体中文 |
DengXian |
|
|
繁体中文 |
Microsoft MHei |
|
|
日语 |
Yu Gothic |
|
|
朝鲜语 |
Microsoft NeoGothic |
|
|
全球化常用编程
更改当前区域性
决不要对区域性的正确格式进行硬编码。相反,您应该为当前线程的 CurrentCulture 属性分配一个新的 CultureInfo 对象。以下代码示例将对代表新的 en-US 区域性 CultureInfo 对象进行实例化。然后将当前线程中的 CurrentCulture 和 CurrentUICulture 属性设置为新的 CultureInfo 对象。
Thread.CurrentThread.CurrentCulture用于选择一个区域语言 然后显示其对应的区域性信息。
Thread.CurrentThread.CurrentUICulture用于获取当前区域的语言,然后显示。
String cul;
cul = "en-US";
CultureInfo newCulture = new CultureInfo(cul);
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture;
以下代码示例分别为变量 cc 和 cuic 分配了新的 CurrentCulture 和 CurrentUICulture 对象。
CultureInfo cc, cuic;
cc = Thread.CurrentThread.CurrentCulture;
cuic = Thread.CurrentThread.CurrentUICulture;
在选定的区域设置语言中显示当前区域性名称
以下代码示例将 regionalFrmt 文本框的文本字段设置为选定的区域设置语言。当前区域性名称将以与当前区域性关联的语言显示。
regionalFrmt.Text = cc.NativeName;
用本地化语言显示当前区域性名称
以下代码示例将 displayLang 文本框的文本字段设置为当前区域性名称的本地化版本。例如,假如本地化语言是法语,那么当前区域性名称将以法语显示。
displayLang.Text = cuic.DisplayName;
显示日期(长格式和短格式)
以下代码示例可以获取当前日期和时间。之后,它将 longDate 和 shortDate 文本框的文本字段设置为包含日期模式和当前日期的字符串。
DateTime curDate = DateTime.Now;
longDate.Text = cc.DateTimeFormat.LongDatePattern.ToString() + " " + curDate.ToString("D");
shortDate.Text = cc.DateTimeFormat.ShortDatePattern.ToString() + " " + curDate.ToString("d");
显示时间(长格式)
以下代码示例将 longTime 文本框的文本字段设置为包含 LongTimePattern 和当前时间的字符串。此字符串将根据当前区域性的时间格式进行格式化
longTime.Text = cc.DateTimeFormat.LongTimePattern + " " + curDate.ToString("T");
显示货币格式和货币符号
以下代码示例将 currencyFrmt 文本框的文本字段设置为与变量 money 关联的值。变量的 ToString() 方法将此值转换为根据当前区域性的货币格式编排格式的字符串。
Int64 money = 123456789;
currencyFrmt.Text = money.ToString("C");