本主题提供与多语言应用工具包(MAT)相关的常见问题和问题的解答。
另请参阅 使用多语言应用工具包。
请注意 ,该工具包支持 .resw (XAML) 和 .resjson (JavaScript) 文件。 但在本主题中,我们将仅引用 .resw 文件。 .resw 文件称为资源文件。 它包含默认语言或翻译成其他语言的字符串。 包含 .resw 文件的文件夹通常为语言标记的值命名。
是否需要使用多种语言的 .resw 文件?
否。 工具包的主要优势之一是,不需要使用多种语言的 .resw 文件。 工具包使用 .xlf 文件管理和同步应用的资源。 这消除了与使内容跨多个 .resw 文件保持同步相关的挑战。
包含匹配的 .resw 和 .xlf 文件的项目会导致忽略 .xlf 文件中的转换。 发生这种情况时,生成期间会显示一条警告,告知最终应用中不包含 .xlf 翻译。 当 .resw 文件和 .xlf 文件具有具有相同语言代码的目标语言时,它们匹配。 匹配对的示例是 Strings\de-DE\Resources.resw
和一个 <project-name>.de-DE.xlf
文件(包含 target-language="de-DE"
)。
是否可以使用多种语言的 .resw 文件?
可以,但我们不建议这样做。 如果要在项目中以多种语言包含 .resw 文件并使用工具包,请确保没有匹配的 .resw 和 .xlf 文件。
我在“工具”菜单中看不到用于启用多语言应用工具包的选项
请尝试执行这些步骤。
- 在打开 “工具” 菜单之前,请确保选择项目节点而不是解决方案节点。
- 使用 Visual Studio 扩展管理器确认已安装工具包扩展。
- 确认项目是 UWP 项目。
生成项目时,我看不到一条消息,指出多语言应用工具包生成已开始
确认已为项目启用 MAT。 在工具菜单上,选择“多语言应用工具包”>启用选择。 如果项目已启用以前版本,请使用“工具”菜单禁用并重新启用 MAT。 这将更新项目以使用工具包的新版本。
确保已安装“所有 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 文件,然后重新包含该文件,则可能无法正确设置文件类型元素。 在 Visual Studio 中,选择该文件并检查属性窗口。 文件的“生成操作”应设置为 XliffResource,“复制到输出目录”应设置为“不复制”。 这就是引用在项目文件中的外观。
<XliffResource Include="MultilingualResources\<project-name>.fr-FR.xlf" />
我添加了基于 .xlf 的语言。 我的字符串在哪里?
默认语言资源文件 (.resw) 是应用使用的字符串的规范“架构”。 翻译的资源文件可以包含这些字符串的所有或子集。
生成项目时,资源文件和 .xlf 文件将同步。
- 更新 .xlf 文件以反映任何添加或删除的字符串,或者添加或删除了资源文件。
- 资源文件会更新,以反映 .xlf 文件中的任何已翻译字符串。
这在“使用多语言应用工具包”中进行了详细介绍。
生成项目时,.xlf 文件保持为空
在高效使用 MAT 之前,必须为你的应用做好本地化准备。 这在“使用多语言应用工具包”中进行了详细介绍。
什么是 Microsoft Translator?
Microsoft 翻译工具是一种基于云的服务,提供基于机器的翻译。 机器翻译非常适合在人工翻译不合理的情况下获得翻译。 可以在Microsoft 翻译工具了解详细信息。
工具包使用 Microsoft 翻译工具 服务向你提供翻译建议。 在翻译语言对话框中显示Microsoft 翻译工具图标时,可以看到Microsoft 翻译工具支持哪些语言。
可以通过选择字符串并单击“翻译”,使用多语言编辑器中的Microsoft 翻译工具快速翻译应用。
什么是伪语言,什么是伪资源跟踪器?
伪语言是对旨在模拟真实语言本地化的软件产品的人工修改。 可以在“使用多语言应用工具包”中找到 有关伪语言和伪资源跟踪器的更多详细信息。
如何实现将语言首选项设置为伪语言,以便可以测试伪定位字符串?
这在“使用多语言应用工具包”中进行了说明。
可以使用伪语言找到哪种本地化问题?
这在“使用多语言应用工具包”中进行了说明。
当我启动应用时,我看不到任何翻译,或者我的应用仅部分翻译
在多语言编辑器中打开 .xlf 文件,查看翻译是否存在。 当默认语言 .resw 文件中的字符串显式更改时,将从 .xlf 文件中删除任何相应的翻译。 这是为了确保翻译与其源字符串匹配。 翻译 .xlf 文件中的字符串(s),然后重新生成以更新非默认语言 .resw 文件(s)。
如果字符串在 .xlf 文件(s)中翻译,但它们未显示在应用中,请重新生成项目以更新非默认语言 .resw 文件(s)。 Visual Studio 优化生成命令,以仅生成自上次生成以来已更改的文件。
检查语言首选项顺序。 确保要测试的语言列在“设置”中的语言首选项列表顶部。
工具包在生成输出中报告错误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-hant”),而“zh-chs”不正确(将其更改为“zh-hans”)。
是否有办法了解有关我看到的错误的详细信息?
是的,可以在 Visual Studio 中启用详细日志记录。 单击“工具>选项>项目”和“解决方案>生成并运行”。 将 MSBuild 项目生成输出详细程度从最小值更改为 Normal 或更高版本。
从命令行运行 MSBuild 还可以生成其他消息。
msbuild /t:rebuild <project-name>
导入翻译失败
导入过程在导入之前执行基本验证。 这可确保导入的文件中的目标区域性信息与现有 .xlf 文件中的目标区域性信息匹配。 在多语言编辑器中打开 .xlf 文件,并确保区域性信息匹配。
如果我的翻译器未安装 Windows 10、Windows 11 和/或 Visual Studio 和/或多语言应用工具包,该怎么办?
在“导出字符串资源”对话框中选择“ 输出:邮件收件人 ”时,电子邮件包含下载和安装多语言应用工具包(MAT)的链接。 即使没有 Windows 10、Windows 11 和 Visual Studio,翻译器仍可以安装 MAT 独立多语言编辑器工具。
有关详细信息,请参阅使用多语言应用工具包。
MarkupRules.xml 和 ResourcesLocks.xml 文件发生了什么情况?
多语言应用工具包不使用专有资源锁定文件。 而是将 XLIFF 1.2 标记 <mrk>
直接添加到 .xlf 文件,以标识机器翻译期间未修改的字符串。 这使 XLIFF 文件可以独立包含,并允许基于每个文件的资源锁定。
不再需要这些额外的支持文件,如果拥有它们,则可以安全地将其删除。
.tpx 文件发生了什么情况?
.tpx 文件提供了一种在发送 .xlf 文件进行翻译时包含 MarkupRules.xml
和 ResourcesLocks.xml
文件的简单方法。 不再需要此功能。
如果在需要检索的 .tpx 文件中具有翻译,只需将 .tpx 文件扩展名重命名为.zip。 这样就可以使用文件资源管理器或任何.zip兼容工具打开和提取内容。
我想我已经做好了一切, 但它仍然不起作用
请尝试执行这些步骤。
- 使用已描述的方法之一添加翻译。
- 转储 .pri 文件(请参阅 MakePri.exe命令行选项),以查看翻译是否位于 .pri 文件中。 翻译将显示语言代码和翻译值,如下所示。
<Candidate qualifiers="Language-QPS-PLOC" type="String"> <Value>[!!_Ŝéãřćĥ_!!]</Value> </Candidate>
- 从命令提示符生成;生成的错误可能比生成输出中报告的更多详细信息。
我的应用未能通过 Microsoft 应用商店认证
在开始 Microsoft Store 认证过程之前,必须从项目中排除 <project-name>.qps-ploc.xlf
文件。 伪语言用于检测潜在的可本地化性问题或漏洞,但它不是有效的 Microsoft Store 语言。 如果未删除,你的应用将在 Microsoft Store 认证过程中认证失败。
正在收集哪些数据?
多语言应用工具包 Visual Studio (MAT VS) 扩展收集匿名使用情况数据,并将其发送到 Microsoft 服务器,以帮助改进我们的产品和服务。 遥测默认处于关闭状态,可以随时启用或禁用。
使用情况数据:这是有关正在使用的功能的匿名信息。 例如:向已启用 MAT 的解决方案添加新语言。
配置数据:这是有关已安装的 MAT VS 版本及其运行 Windows 版本的匿名信息。
下面是采用以下格式(键/值/说明)收集的数据的具体示例:
- AddLanguage /MachineID:xxxx/这是基于网络适配器 NIC 的哈希。 不保证是唯一的。
- TimeStamp / 2022/01/07T22:04:45.0000000Z / 时间事件发生。
- 已安装MAT_Version/4.1.02/MAT 版本。
- 语言/ fr,es,de/DE / 添加到项目中的语言列表。
所有数据都是使用 Application Insights 收集的,并发送到 Azure Log Analytics。 数据将保留 90 天,然后删除。