首次在翻译生成器中打开 .pbix 项目时,翻译网格将对项目基础数据模型中的每个未隐藏表、度量值和列均显示一行。 翻译网格不显示数据模型中对报表视图隐藏的数据模型对象的行。 隐藏对象不会显示在报表上,因此不需要翻译。
以下屏幕截图显示了简单数据模型在修改为支持辅助语言之前的起点。
注意
如果你尚未安装 Translations Builder,请参阅使用 Translations Builder 创建多语言报表。
如果查看此 .pbix 项目的翻译网格,可以看到前三列包含用于标识每个元数据翻译的只读列。 每个元数据翻译都有一个“对象类型”、一个“属性”和一个“名称”。 始终使用 Caption 属性的翻译。 如有必要,可以添加 Description 和 DisplayFolder 属性的翻译。
翻译网格中的第四列始终显示数据模型的默认语言和区域设置的翻译,在本例中为“英语 [en-US]”。
注意
翻译生成器可以更新默认语言的翻译。 请谨慎使用此技术。 由于默认语言的翻译未在 Power BI Desktop 中加载,因此结果可能会令人困惑。
添加语言
翻译生成器提供“添加语言”选项,用于将辅助语言添加到项目的数据模型。
翻译生成器不会为特定语言添加元数据翻译。 不过它会为用于标识语言和区域设置的区域性名称添加元数据翻译。 有关详细信息,请参阅在多语言 Power BI 报表中使用区域设置值。
翻译生成器将语言和区域性名称之间的差异抽象化,以简化用户体验。 内容创建者可以考虑语言而不是区域性名称。
若要添加一种或多种辅助语言,请执行以下步骤。
选择“添加语言”以显示“添加语言”对话框。
在列表中选择一种语言,或使用 Ctrl 选择多种语言。
选择“添加语言”。
添加的一种或多种语言现在显示在“辅助语言”列表中。
在 Power BI Desktop 中,选择“保存”。
重要
翻译生成器可以修改内存中加载的数据模型,但无法将内存中的更改保存回基础 .pbix 文件。 始终返回到 Power BI Desktop,并在添加语言或者创建或更新翻译后选择“保存”命令。
添加新语言会将一列新的可编辑单元格添加到翻译网格。
如果内容创建者会讲所涉及的所有语言,他们可以直接在翻译网格中添加和更新辅助语言的翻译,获得类似于 Excel 的编辑体验。
在 Power BI 服务中测试翻译
无法在 Power BI Desktop 中验证多语言工作。 相反,必须在与高级容量关联的工作区中的 Power BI 服务中测试工作。 使用翻译生成器添加翻译支持后,请执行以下步骤:
在 Power BI Desktop 中,保存对基础 .pbix 文件的更改。
在“开始”功能区中,选择“发布”。
在“发布到 Power BI”对话框中,突出显示一个工作区,然后选择“选择”。
发布完成后,选择链接以在 Power BI 服务中打开项目。
使用报表加载默认语言后,选择浏览器地址栏,并将以下 language 参数添加到报表 URL。
?language=es-ES
将 language 参数添加到报表 URL 的末尾时,请分配一个值,该值是有效的区域性名称。 添加 language 参数并按 Enter 键后,可以验证浏览器在重新加载报表时是否接受该参数。
如果忘记添加问号 (?) 或者未正确设置 language 参数的格式,浏览器将拒绝该参数,并将其从 URL 中删除。 使用 language 参数值 es-ES 正确加载报表后,应会看到整个 Power BI 服务 UI 的用户体验从英语更改为西班牙语。
报表还显示列和度量值名称的西班牙语翻译。
实现多语言工作流
测试工作并验证翻译是否正常运行后,可以将 .pbix 文件存储在源代码管理系统(如 GitHub 或 Azure Repos)中。 此方法可能会纳入应用程序生命周期管理 (ALM) 策略,其中对辅助语言和翻译的支持会随时间推移而发展。
开始使用辅助语言和翻译来本地化 .pbix 项目时,请遵循相同的一组步骤:
- 在 Power BI Desktop 中进行更改。
- 将 .pbix 项目发布到 Power BI 服务。
- 使用 language 参数在 Power BI 服务中使用浏览器测试你的工作。
- 重复这些步骤,直到完成所有翻译。
使用特定语言和区域设置嵌入 Power BI 报表
如果使用 Power BI 嵌入进行开发,则可以使用 Power BI JavaScript API 加载具有特定语言和区域设置的报表。 通过使用包含 language
属性的 localeSettings
对象扩展传递给 powerbi.embed
的 config
对象来完成此任务,如以下代码所示。
let config = {
type: "report",
id: reportId,
embedUrl: embedUrl,
accessToken: embedToken,
tokenType: models.TokenType.Embed,
localeSettings: { language: "de-DE" }
};
let report = powerbi.embed(reportContainer, config);