如何在 Power BI 中实现多语言报告,一篇给你讲清楚


在Power BI报表开发过程中,难免会遇到多语言用户的情况。

通常我们想到通过复制页面或每种语言维护单独的PBIX项目文件来实现多语言呈现。

这种方式实现起来比较简单,但是会带来更多的维护工作。而且当语言种类更多,页面数量很多时,以上两种方式就变得艰难。

幸运的是,Power BI提供国际化和本地化功能,支持构建多语言报告。例如,我们设计了一份Power BI报告,希望该报告为某些用户以中文呈现,同时为其他用户提供英语、葡萄牙语、日语、西班牙语或法语的渲染。

可以通过以下链接体验多语言报告的能力:

https://multilanguagereportdemo.azurewebsites.net/

需要说明的是,翻译功能需要在支持Premium或者Embedded的专有容量工作区中运行。请确认你的工作环境是否具备专有容量,避免时间浪费。

接下来,就和大家一起,了解Power BI如何实现关键的翻译工作以及自动化重复性任务。

首先,翻译功能很大程度上依赖一个名为"Translations Builder"的外部工具,可以点击以下链接进行下载安装:

https://github.com/PowerBiDevCamp/TranslationsBuilder

好,安装好之后不要着急,工具很简单,我们先来了解三个基本概念。

元数据翻译
报表标签翻译
数据翻译
元数据翻译的本地化对象为数据集。支持元数据转换的对象类型包括表、列、度量值、层次结构和层次结构级别。

报表标签翻译的本地化对象是文本元素,即不直接与数据集对象关联的硬编码内容。例如报告标题、部分标题和按钮标题。

数据翻译的本地化对象是原始数据,也就是底层数据本身。例如中文环境下产品有“电脑”、“手机”,数据翻译的结果就是“Computer”、“Phone”。

好,既然了解了三个基本概念,我们直接开始。

我先拿到一份已经开发好的报表,全部中文环境。

报表展现了公司内项目的进展情况。

其中原始表、列和度量属于“元数据”;

报告标题、图表标题以及一些文本类的内容属于“报表标签”。值得一提的是,如果视觉对象内的度量值经过了重命名,那也就不再属于“元数据”类别,而是“报表标签”。两者的区别在后面的实际操作中会有直观的感受。

OK,让我们打开“TranslationsBuilder”。

点击左上角“Dataset Connection”-“Connect…”,连接到本地数据集①。

左上角显示了数据集的连接信息;

中间可以添加其他语言;

右侧可以导出-导入翻译文件;

下方显示的元数据的列表,第一列表示了对象的类型:Table、Column和Measure;

可以看到,当前数据集的默认语言是zh-CN:

我们先来演示如何对“元数据”进行翻译。

我们添加第二语言,点击“Add Language”,这里用英文en-US进行演示。

选择第二语言之后,会看到在下方的表格内新增了一列:

这一列,就是用来维护元数据对应的英文翻译的地方。

双击空白单元格,即可手动输入对应的翻译内容。

但是在实际应用中,元数据的内容就很多了,不可能手动一个一个输入。这时,聪明的你肯定想到了,用机器翻译!

对了。点击“Export Translations Sheet”,可以将当前元数据列表导出为.csv文件。

之后,我们可以通过各种翻译工具翻译此文件的默认语言列为对应语言。具体什么工具就八仙过海各显神通了。

官方也给出了标准做法,就是调用Azure平台的API接口。当然,这需要购买Azure Translator服务密钥,这里就不展开了,感兴趣可以参考:

Translations Builder 通过执行 API 生成机器翻译 对 Azure Translator 的调用服务,这是通过 Azure 认知服务提供的 API 终结点。这 Web API 使通过数据集自动枚举成为可能。将数据集对象名称从默认语言转换为的对象第二语言的翻译。

https://learn.microsoft.com/en-us/azure/ai-services/translator/translator-overview

完成对元数据的翻译之后,将文件导入回Translations Builder,得到如下界面:

机器翻译的结果往往还需要人工进行校对,来确保翻译结果符合业务,符合当地的法律法规要求。这一步必不可少,不要直接使用机器翻译!

接下来,点击右上角的“Sync Data Model”,将翻译结果传输到Power BI 文件。需要注意的是,Translations Builder并不会直接保存编辑的结果,每次保存都需要先同步到数据集,然后在Power BI进行保存。

同步之后,会在PBI端的模型视图-区域性下,看到en-US和zh-CN两种区域。


这时,我们已经对元数据完成了整体的翻译内容。

发布报表,我们在Power BI服务上预览一下效果。发布之后,看到的并没有什么区别,还是全部中文。

不要急,在链接的后面增加一段字符串“?language=en-US”,然后刷新页面。行不通的话在浏览器的设置里更改一下默认语言为英文,重启浏览器也可以达到预览的效果。

这里也是翻译功能的一个痛点,就是无法在开发端查看效果,而是一定要发布服务上。

因为区域性设置是基于浏览器的区域来进行切换的,Power BI会根据区域类型去寻找有没有对应的区域性设置,如果有,则展示对应的区域内容,如果没有,则展示默认的区域内容。

OK,我们手动更改区域之后,看到翻译了全部元数据的报表如下:

奇怪的是,为什么只有绿色框选部分变成了英文? 而其他内容依然是中文。我们不是对所有的元数据都进行了翻译吗?

留10s的思考时间。

没有变成英文的有三类:

1:本来就是报表标签的内容。例如“项目概览”,我们还没有对它进行翻译;

2:本来是度量值,但是在视觉对象中,我们对度量值进行了重命名,元数据的翻译不再适用。

3:原始数据。

针对第一种情况,我们在第二节里面会介绍如何对报表标签进行翻译。

针对第二种情况,我们就需要避免对度量值进行命名的操作,而是一开始就以展示的名称进行度量值命名。

针对第三种情况,我们在第三节进行介绍。

针对元数据翻译,进行总结如下:

借助Translations Builder工具,可以实现很简单的元数据翻译功能。
通过导入/导出功能,我们可以对组织内的元数据翻译进行复制和复用,其翻译内容本质就是一份csv文件。
翻译工作的保存需要在PBI端进行,切记。
预览工作需要在服务端进行,通过切换区域来实现。
单凭元数据翻译,很难达到我们想要的效果,通常需要搭配元数据翻译+报表标签翻译来实现。


如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。




长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~


Power Pivot工坊