此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

如何生成 Windows Phone 8 的本地化应用

2014/6/18

适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

本主题介绍如何通过使用特定语言资源文件从代码中分离可本地化的资源。Visual Studio 使用这些资源文件创建程序集,通过这些程序集,您的应用可以支持多种语言。有关此过程的更多信息,请参见打包和部署资源

若要查看包含所有以下示例的完整的工作代码示例,请下载全球化示例

提示提示:

Multilingual App Toolkit 集成了 Visual Studio Professional 2012 和 Visual Studio Express 2012 for Windows Phone,可以提供集成的翻译支持、翻译文件管理和编辑器工具,从而帮助您创建 Windows Phone 应用和 Windows 应用商店 应用。使用此工具包连接到 Microsoft Translator 可获得快速翻译建议。有关详细信息,请参见如何使用 Multilingual App Toolkit

有关让您的应用可以本地化的额外信息,请参见 执行 Windows Phone 8 本地化的最佳做法

本主题包括以下部分。

正如 执行 Windows Phone 8 本地化的最佳做法中所述的,将您的代码从可本地化的资源中分离出来很重要。本地化应用的 UI 文本字符串的常见做法是,将每一个字符串复制到资源文件的字符串表的行中。然后用指向表中相应资源的绑定语句 (XAML) 或资源引用(代码隐藏)替换每一个原始字符串。

您用于捕获正被本地化的 UI 字符串的初始资源文件名为 AppResources.resx,创建您的项目时,默认在应用的资源文件夹内创建此文件。AppResources.resx 也被称为非特定语言资源。在适当时,用占位符字符串资源和模板的 UI 文本 XAML 元素的值以及用于本地化应用栏的示例代码来对它进行初始化。

您的应用所支持的每一个区域性都拥有其自己的资源文件,其中包含与 AppResources.resx 中的相匹配的字符串资源,但是前者的值将被本地化。当您使用区域性区域设置代码添加“支持的区域性”和名称时,将创建这些文件,如 AppResources.en-US.resx。

启动后,您的本地化应用将隐式加载并显示区域性与用户手机的显示语言最匹配的资源。如果没有较好的匹配,应用将使用非特定语言资源。应用代码可以按照元素或全局地显式重写隐式区域性选择。

用资源文件中的字符串替换硬编码字符串。

  1. 创建 Windows Phone 应用程序项目。

  2. 打开并查看名为 MainPage.xaml 的文件。

  3. 定位名为 TitlePanelStackPanel 元素。

  4. 用资源“ApplicationTitle”的以下绑定子句替换第一个 TextBlockText 特性中的硬编码值“MY APPLICATION”。

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

    “ApplicationTitle”资源默认位于 AppResources.resx 文件。

  5. 用您的应用名称替换 AppResources.resx 文件中的“ApplicationTitle”的值。

    现在,TextBlock 元素将如以下所示:

    <TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" 
        Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
    
  6. 在 AppResources.resx 文件中,用适用于您的应用的值创建名为“PageTitle”的新字符串资源。

  7. 在 MainPage.xaml 中,用资源“PageTitle”的绑定子句替换第二个 TextBlockText 特性中的硬编码值“page name”。

    现在,TextBlock 元素将如以下所示:

    <TextBlock Text="{Binding Path=LocalizedResources.PageTitle, Source={StaticResource LocalizedStrings}}" 
        Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
    
  8. 若要本地化您的应用的 ApplicationBar,则在 MainPage.xaml.cs 文件中,取消对 BuildLocalizedApplicationBar 方法调用和功能的注释。

  9. 替换 AppResources.resx 文件中的 AppBarMenuItemTextAppBarButtonText 资源的值。

  10. 添加您希望在应用中使用的按钮、菜单项和关联资源。

添加其他语言的步骤

  1. 在您已经使用非特定语言创建并测试您的应用之后,您可以添加受支持的语言。

    在项目的“属性”页面上,在“受支持的区域性”框中,选择您希望您的应用可以支持的语言。

  2. 保存项目。

    说明注意:

    Visual Studio 已经为每一个受支持的语言创建新的资源文件(非特定语言资源文件 (AppResources.resx) 的副本),而且重命名它们使之包括能够反映新资源文件的区域性的区域设置代码。

  3. 用翻译过的值替换每一个受支持语言资源文件中的非特定语言值。

    警告说明警告:

    为了确保用户能够在 Windows Phone 应用商店 中看到对您的应用的正确本地化语言描述,请遵从以下做法:如果您需要移除已添加的受支持的区域性(通过清除“项目属性”中列表中的选择),请确保清除 WMAppManifest.xml 中关联的受支持的语言(使用“清单设计器” > “受支持的语言” > “打包”中的列表)。同样,在修改 WMAppManifest.xml 中的“受支持的语言”列表或默认语言之前,请确保了解这么做的影响。

您可以将应用栏添加到应用页面中,可以是 XAML 页面或使用 C# 的页面代码隐藏页面。然而,XAML 应用栏不支持 ApplicationBarIconButton 文本标签或 ApplicationBarMenuItem 文本的动态数据绑定。因此,重现以下代码以及在 MainPage 构造函数和占位符资源中对它的调用,使它们成为每一个相关“新建项目”模板中的注释示例。有关创建应用栏的信息,请参见 Windows Phone 的应用栏

警告说明警告:

以下代码示例包括在每一个相关模板中,但是重现在全球化示例中。


// Build a localized ApplicationBar
private void BuildLocalizedApplicationBar()
{
    // Set the page's ApplicationBar to a new instance of ApplicationBar.
    ApplicationBar = new ApplicationBar();

    // Create a new button and set the text value to the localized string from AppResources.
    ApplicationBarIconButton appBarButton = 
        new ApplicationBarIconButton(new   
        Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
        appBarButton.Text = AppResources.AppBarButtonText;
    ApplicationBar.Buttons.Add(appBarButton);

    // Create a new menu item with the localized string from AppResources.
    ApplicationBarMenuItem appBarMenuItem = 
        new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
    ApplicationBar.MenuItems.Add(appBarMenuItem);
}

要测试您的本地化字符串,请执行如何测试 Windows Phone 的本地化应用中的步骤。

显示:
© 2015 Microsoft