多语言应用工具包常见问题和疑难解答指南

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

安装

系统要求是什么?

**支持的操作系统:**Windows 8(RTM 或更高版本,32 位或 64 位版本)。

**需要的软件:**Microsoft Visual Studio。

**磁盘空间需求:**10 MB(32 位)、10 MB(64 位)。

该工具包支持哪些编程语言?

该工具包支持所有使用 Windows 运行时 (WinRT) 环境的 Windows 应用开发。 这包括 .resw (XAML) 和 .resjson (JavaScript) 文件,但对于本文档的其余部分,我们指的只是 .resjson 文件。

启用多语言应用工具包

是否需要多语言的 .resjson 文件?

否。该工具包的主要好处之一是不需要多语言的 .resjson 文件。 该工具包使用项目的 .xlf 文件管理和同步你的应用的资源。 这消除了与跨多个 .resjson 文件保持内容同步相关的难题。

包含相匹配的 .resjson 和 .xlf 文件的项目将导致 .xlf 文件中的译文被忽略。 如果发生此情况,则在构建时将显示一条警告,告诉你在最终应用中未包含 .xlf 译文。当 .resjson 文件和 .xlf 文件具有语言代码相同的目标语言时,两者即相互匹配。例如,相匹配的两个文件有可能是 strings\de-DE\resources.resjson 和一个目标语言属性为 "de-DE" 的德语 (Germany).xlf。

是否可以有多语言的 .resjson 文件

可以,但我们不建议这样做。 如果你希望在项目中包含多语言的 .resjson 文件并使用该工具包,请确保没有匹配的 .resjson 文件和 .xlf 文件。

在“工具”菜单中看不到“启用多语言应用工具包”选项。

请尝试以下步骤:

  1. 在选择“工具”之前,确保选择了“项目”名称,而不是“解决方案”。
  2. 使用“扩展管理器”****验证是否安装了工具包扩展。
  3. 验证你的项目是否为 Windows 应用商店应用项目。

在构建项目时,我看不到“多语言应用工具包”内部版本启动。

确保你已经使用“工具”菜单中的“启用多语言应用工具包”****启用了你的项目。 如果使用以前的版本启用了你的应用,则必须禁用该应用,然后使用“工具”菜单启用“多语言应用工具包”。 这将更新项目,使之能够与新的工具包版本一起使用。

确保安装了“为所有 Visual Studio 版本生成任务”""组件。 这个构建组件将随扩展一起安装,但是你可以在安装期间手动取消选择此构建组件。 在更新 .xlf 文件以及将译文添加到 PRI 文件时需要此组件。 在安装此组件并正确运行后,会显示以下内部版本消息:

1> Multilingual App Toolkit build started.
1> Multilingual App Toolkit build completed successfully.

该工具包报告,在构建期间它未找到任何 XLIFF 语言文件。

消息:

No XLIFF language files were found.  The app will not contain any localized resources.

当工具包在扩展名为 .xlf 的项目中找不到任何文件时会发生此情况。 默认情况下这些文件位于 "MultilingualResources" 文件夹中。 可以移动这些文件,但最好将其保留在该文件夹中,这样编辑器可以找到相关的元数据文件。

右键单击项目名称并从“解决方案”浏览器窗口中选择“添加翻译语言...”****。这将打开一个对话框,可在其中添加基于 .xlf 的语言。 工具包可以发现的任何基于 .xlf 的现有语言都有一个未选中的复选框,指示该语言已经包括在项目中。

在构建期间,我的 .xlf 文件未包括在工具包处理的文件列表中。

如果在某个项目中先排除而后又包括了一个 .xlf 文件,则该文件类型元素的设置可能不正确。 要检查此情况,请直接打开项目文件并查看 .xlf 文件的包含类型。 类型元素必须设置为“无”"",工具包才能处理该文件。 如果设置为“内容”""或其他值,则将其更改为“无”""。 保存项目文件并重新加载该项目。

示例:German (Germany).xlf 类型不正确:

<Content Include="MultilingualResources\German (Germany).xlf" />
<None Include="MultilingualResources\Pseudo Language %28Pseudo%29.xlf" />

我已添加基于 .xlf 的语言。字符串的位置在哪里?

你选择的语言添加到了 "MultilingualResources" 文件夹中。语言文件在最初创建时是空的。下次重建时,.resjson 文件中的字符串将被填充到这些 .xlf 文件中。

在构建我的项目时,.xlf 文件仍然是空的。

请尝试以下步骤:

  1. 使用“重新生成”确保更新了 .xlf 文件。Visual Studio 优化了“生成”****命令,仅生成自上次“生成”以来更改的文件。在添加新 .xlf 文件时,Visual Studio 不会检测更改。
  2. 请确保你的应用支持 Windows 应用商店应用全球化和本地化设计模式。 请参考全球化你的应用的其他主题。

向你的应用中添加语言

什么是 Microsoft Translator 服务?

Microsoft Translator 是一种提供机器翻译的基于云的服务。 在无法合理获得人工翻译时,机器翻译是获得译文的理想选择。 你可以在 Microsoft Translator 中了解详细信息。

此工具包使用 Microsoft Translator 服务为开发人员提供翻译建议。当“添加翻译语言”窗口显示 Microsoft Translator 图标时,你可以看到 Microsoft Translator 支持哪些语言。

使用多语言编辑器中的 Microsoft Translator 可以快速翻译你的应用,方法是选择一个字符串并单击“翻译”按钮。

伪语言。

伪语言是一种对软件产品的人为修改,用来模拟真实的语言本地化,但说母语者仍可以阅读。 伪翻译替换字符并扩展资源字符串的长度,用于在项目周期的早期和实际本地化开始之前检测潜在的本地化能力问题或缺陷。如需深入了解如何使用伪语言进行本地化能力测试,请参阅本地化能力测试

什么是伪资源跟踪符?

除了字符替换和扩展外,伪引擎还为每种资源提供一个唯一的跟踪标识符。 此跟踪符附加在每个字符串的开头并用方括号 [xxxxx] 括住。 在可视的 UI 检查测试期间,你可以使用这些跟踪符。它们可有助于跟踪产品中特定的资源,尤其是当多个资源具有类似或重复的文本时。

在下面的 "Hello World" 文本示例中,伪翻译扩展至大约占据了屏幕空间的 30%,然后应用资源跟踪符:

"Hello World" -> "Ĥèĺļõ Ŵòŗłđ" -> "[!!_Ĥèĺļõ Ŵòŗłđ_!!]" -> “[hJ8s1][!!_Ĥèĺļõ Ŵòŗłđ_!!]"

资源跟踪符默认处于开启状态,并且可以在属性 "EnableResourceTracker = true" 下的 PseudoSettings.config 文件中看到。如果需要,可以将此参数更改为 false。

我在 Windows 8 语言首选项列表中找不到伪语言。

Windows 8 语言首选项列表中默认不显示英语 (qps-ploc)。 要添加英语 (qps-ploc),请执行以下操作:

  1. 打开控制面板,选择“时钟、语言和区域”****>“语言”。
  2. 单击“添加语言”****。
  3. 在搜索框中,键入 qps-ploc。确保键入完整的语言代码;任何不完整的代码都不会在搜索结果中返回伪语言。
  4. 选择“英语(pseudo-qps)”,然后单击“添加”。****
  5. 确保“英语(qps-ploc)”列在首选语言列表的顶部。

测试

在启动我的应用时看不到任何翻译,或者我的应用仅部分翻译。

  1. 确保你的 .xlf 文件包含翻译。

    在多语言编辑器中打开 .xlf 文件,查看是否显示翻译。 更新 .resjson 或 .resw 文件中的字符串时,将删除任何相关的翻译。 这是为了确保翻译与相关的字符串匹配。 翻译字符串并重建。

  2. 我的字符串已经翻译了,但仍没有显示在我的应用中。

    请使用“重新生成”确保更新的 .xlf 文件包括在你的应用的 PRI 文件中。Visual Studio 优化了“生成”****命令,仅生成自上次“生成”以来更改的文件。 .xlf 文件当前不会自动触发重建需求。

  3. 检查你的语言首选项顺序。

    确保你测试的语言列在语言首选项列表的顶部。 应用将以此顺序显示语言,如果你的应用默认语言不在顶部,则可能永远看不到你的翻译。

使用伪语言可能找到哪些类型的本地化能力问题?

  • **UI 截断。**伪语言将字符添加到你的字符串,以便向你显示在翻译之后字符串可能的样式。
  • **硬编码字符串。**如果在你的伪语言应用中看到常规英语文本,则表示字符串已被硬编码,不能使用工具包进行翻译。

如需深入了解伪语言以及如何使用伪语言进行本地化能力测试,请参阅本地化能力测试

我的应用没有按照我的语言首选项显示。

语言首选项由你的语言从上到下的顺序确定。在部署应用之前,确保顺序正确。打开控制面板,选择“时钟、语言和区域”>“语言”****,选择一种语言,并单击“上移”或“下移”****以更改其顺序。

工具包在内部版本输出中报告 0x80004004 错误。

消息:

Merge of Loc PRI file failed calling makepri.exe: "0x80004004"

当区域格式与工具包构建操作冲突时,可能会发生此情况。 解决办法是在构建时将你的区域代码更改为 en-US。

工具包在内部版本输出中报告 0x80004005 错误。

消息:

Merge of Loc PRI file failed calling makepri.exe: "0x80004005"

当 .xlf 文件包含不支持的目标语言时,可能会发生此情况。 多语言应用工具包客户预览错误地使用了目标区域性 "zh-cht"(繁体中文)和 "zh-chs"(简体中文)。 在以前的版本中已经修正了此问题。

要修正此错误,可以手动修改包含错误代码的 .xlf 文件。 将 "zh-cht" 更改为 "zh-hant",将 "zh-chs" 更改为 "zh-hans"。

是否有办法找到有关我看到的错误的更多信息?

有,你可以在 Visual Studio 中打开详细的日志记录。 选择“工具”>“选项”菜单,以显示“选项”对话框。 接下来,展开“项目和解决方案”,并选择“生成并运行”。 将“MSBuild 项目内部版本输出详细级别”****从“最小”更改为“正常”****或更高。

注意  从命令行运行 MSBuild 还可以生成其他消息。尝试从 Visual Studio 命令行构建项目:

msbuild /t:rebuild <projectname>

 

导入/导出 XLIFF 文件

导入翻译失败

在导入之前导入操作将执行基本验证,以确保目标区域性信息与现有的 .xlf 和正在导入的 .xlf 相匹配。在多语言编辑器中打开 .xlf 文件,确保区域性信息匹配。

如果我的 Translator 没有安装 Windows 8/Visual Studio/多语言应用工具包该怎么办?

没关系!在选择“发送”进行翻译时,电子邮件将包含一个用于下载和安装多语言应用工具包的链接。没有 Windows 8 和 Visual Studio,多语言编辑器仅是可安装的组件。

当准备好翻译文件并返回给你时,右键单击 .xlf 文件并选择“导入翻译”****,然后选择返回的 .xlf 文件。

已否决的功能

MarkupRules.xml 和 ResourcesLocks.xml 文件出了什么问题?

已发布的多语言应用工具包版本不再使用专用资源锁定文件。 而是将 XLIFF 1.2 标记 <mrk> 直接添加到 .xlf 文件来标识在机器翻译期间未修改的字符串。 这可让 XLIFF 文件成为自包含文件,并允许进行基于每个文件的资源锁定。

因此,不再需要这些额外的支持文件,可以放心地将其从使用以前版本的工具包创建的项目中删除。

.TPX 文件出了什么问题?

在发送 .xlf 文件进行翻译时,.TPX 文件可提供一种包含 MarkupRules.xml 和 ResourcesLocks.xml 文件的简单方法。 在删除这两个支持文件之后,将不再需要此功能。

如果 .TPX 文件中有需要检索的翻译,只需将文件扩展名 .TPX 重命名为 .ZIP 即可。 这样你可以使用文件资源管理器或任何 .ZIP 兼容工具打开并提取内容。

其他问题

我认为我的操作都正确,但仍然不能运行。

请尝试以下步骤:

  1. 使用上述方法之一添加翻译。

  2. 转储 .pri 文件(可以在 MakePRI.exe 配置中找到),查看你的翻译是否在 .pri 文件中。将显示翻译并附带语言代码和翻译的值:

    <Candidate qualifiers="Language-QPS-PLOC" type="String">
        <Value>[!!_Ŝéãřćĥ_!!]</Value>
    </Candidate>
    
  3. 从 cmd 提示符构建;得到的错误中提供的信息可能比内部版本输出中所报告的内容更详细。

我使用针对 Visual Studio 11 Beta 或 RC 的多语言应用工具包启用了我的应用。 我需要执行任何特殊操作吗?

需要。在安装多语言应用工具包 1.0 版之后,你需要使用“工具”菜单先禁用而后再启用多语言应用工具包。 这将更新项目,使之能够与较新版本的工具包一起使用。

我安装了 Windows 8 和 Visual Studio 2012 以及用于 Visual Studio 11 Beta 的多语言应用工具包。

如果你使用****“程序和功能”卸载了多语言应用工具包,仍不会安装工具包的版本预览,这是因为扩展仍安装在 Visual Studio 中。

要解决此问题,请运行 Visual Studio 并通过扩展管理器卸载多语言应用工具包扩展。

我的应用未得到 Windows 应用商店的认证。

确保你的应用仅包含支持的语言。 在开始认证过程之前,你应该从项目中排除伪语言 (Pseudo).xlf 文件。伪语言不是 Windows 应用商店可选择的语言,包含该语言时不会向用户提供任何值。

相关主题

全球化你的应用

Microsoft Translator

本地化能力测试

MakePRI.exe 配置