为 Power BI 视觉对象添加本地语言

  • 版本 :2023.1(当前版本)

为 Power BI 视觉对象添加本地语言

Power BI 支持一系列本地语言。 你可以检索 Power BI 区域设置语言,并使用它在视觉对象中显示内容。

以下选项卡显示以不同语言显示内容的相同示例条形图视觉对象示例。 每个条形图都是使用不同的区域设置语言(英语、巴斯克语和印地语)创建的,这些语言均显示在工具提示中。

  • 英语条形图

  • 巴斯克语条形图

  • 印地语条形图

以英语显示的示例条形图视觉对象。

备注

  • API 1.10.0 和更高版本支持视觉对象代码中的本地化管理器。

  • 开发过程中调试视觉对象不支持本地化。

如何向视觉对象添加本地 Power BI 语言

若要向视觉对象添加本地 Power BI 语言,请执行以下步骤:

  1. 设置环境以显示非英语语言。

  2. 获取本地 Power BI 语言。

  3. 设置视觉对象显示名称

  4. 创建语言文件夹。

  5. 为每种语言添加一个资源文件。

  6. 创建新的 localizationManager 实例。

  7. 调用 getDisplayName 函数。

步骤 1 - 设置环境以显示非英语语言

若要测试视觉对象,需要让 Power BI 使用非英语语言。 本节介绍了如何更改 Power BI Desktop 和 Power BI 服务的设置,使其使用非英语的本地语言。

  • Power BI Desktop - 从 https://powerbi.microsoft.com 下载 Power BI Desktop 的本地化版本。

  • Power BI 服务 - 如果你使用的是 Power BI 服务(Web 门户),则在设置中更改语言:

    1. 登录到 PowerBI.com。

    2. 导航到“设置”>“设置”>“设置”。

      Power BI 服务中的“设置”、“设置”、“设置”和“菜单”选项的屏幕截图。

    3. 从“常规”选项卡中选择“语言”。 在“语言设置”中,选择要让 Power BI 使用的语言,然后选择“应用”。

      显示 Power BI 服务中语言设置的屏幕截图。

步骤 2 - 获取区域设置 Power BI 语言

在视觉对象初始化过程中,本地 Power BI 语言作为 locale 字符串进行传递。 如果在 Power BI 中更改了区域设置语言,将使用新的语言再次生成视觉对象。

TypeScript复制

private locale: string;
...this.locale = options.host.locale;

备注

在 Power BI Desktop 中,locale 属性包含已安装的 Power BI Desktop 的语言。

步骤 3 - 设置视觉对象显示名称

每个视觉对象都会在属性窗格中显示信息。 例如,使用 pbiviz new 命令创建的未本地化的自定义视觉对象,将在属性窗格中显示“类别数据”和“度量值数据”字段。

显示新创建的 Power BI 视觉对象中“类别数据”和“度量值数据”字段的屏幕截图。

属性窗格显示字段是在 capabilities.json 文件中定义的。 每个显示字段都是使用 displayName 属性进行定义的。 将 displayNameKey 添加到你要本地化的每个显示名称中。

JSON复制

{    "dataRoles": [
{ "displayName": "Category Data", "displayNameKey": "VisualCategoryDataNameKey1", "name": "category", "kind": "Grouping"
},
{ "displayName": "Measure Data", "displayNameKey": "VisualMeasureDataNameKey2", "name": "measure", "kind": "Measure"
}
]
}

步骤 4 - 创建语言文件夹

要创建本地化视觉对象,你的项目需要有一个语言文件夹。 在项目中,创建一个名为“stringResources”的文件夹。 此文件夹将针对你希望视觉对象支持的每个本地语言包含一个子文件夹。 例如,若要支持阿拉伯语和希伯来语,请按以下方式添加两个文件夹:

VS Code 的屏幕截图,显示一个视觉对象项目文件夹。字符串资源文件夹包含两个子文件夹(一个针对阿拉伯语,一个针对希伯来语)。

步骤 5 - 为每种语言添加一个资源文件

对于你希望视觉对象支持的每种语言,请在相应的 stringResources 子文件夹中添加 resources.resjson JSON 文件。 这些文件包含区域设置语言信息,以及你要替换的每个 displayNameKey 的本地化字符串值。

VS Code 的屏幕截图,显示一个视觉对象项目文件夹。字符串资源文件夹中的每个子文件夹都包含一个 resources.resjson 文件。

每个 JSON 文件都定义了一个受支持的区域设置语言。 在每个 resources.resjson 文件中添加你将要使用的所有本地化字符串。

示例

  • 其中每个 displayNameKey 都有俄语字符串的 resources.resjson 文件。

    JSON复制

    {
    ... "Role_Legend": "Обозначения", "Role_task": "Задача", "Role_StartDate": "Дата начала", "Role_Duration": "Длительность"
    ...
    }
  • 其中每个 displayNameKey 都有希伯来语字符串的 resources.resjson 文件。

    JSON复制

    {
    ... "Role_Legend": "מקרא", "Role_task": "משימה", "Role_StartDate": "תאריך התחלה", "Role_Duration": "משך זמן"
    ...
    }

步骤 6 - 创建新的 localizationManager 实例

在视觉对象的代码中创建新的 localizationManager 实例。

TypeScript复制

private localizationManager: ILocalizationManager;constructor(options: VisualConstructorOptions) {    this.localizationManager = options.host.createLocalizationManager();
}

步骤 7 - 调用 getDisplayName 函数

创建新的 localizationManager 实例后,可以使用在 resources.resjson 中定义的字符串键参数来调用本地化管理器的 getDisplayName 函数。

例如,对于 en-US,以下代码将返回“Legend”,对于 ru-RU,以下代码将返回“Обозначения”。

TypeScript复制

let legend: string = this.localization.getDisplayName("Role_Legend");

格式窗格和分析窗格本地化

备注

与 API 版本 5.1+ 相关

若要支持格式窗格和分析窗格组件的本地化,请将本地化字符串设置为以下内容:

TypeScript复制

displayName: this.localization.getDisplayName("Font_Color_DisplayNameKey");
description: this.localization.getDisplayName("Font_Color_DescriptionKey");

有关本地化格式设置模型,请参阅格式窗格本地化。
有关本地化格式设置模型 utils,请参阅格式设置模型 utils - 本地化。

支持的语言

下表包含 Power BI 中支持的所有语言的列表,以及 locale 变量为每个语言返回的字符串。

区域设置字符串语言
ar-SAالعربية(阿拉伯语)
bg-BGбългарски(保加利亚语)
ca-EScatalà(加泰罗尼亚语)
cs-CZčeština(捷克语)
da-DKdansk(丹麦语)
de-DEDeutsche(德语)
el-GRελληνικά(希腊语)
en-USEnglish(英语)
es-ESespañol 服务(西班牙语)
et-EEeesti(爱沙尼亚语)
eU-ESEuskal(巴斯克语)
fi-FIsuomi(芬兰语)
fr-FRfrançais(法语)
gl-ESgalego(加利西亚语)
he-ILעברית(希伯来语)
hi-INहिन्दी(印地语)
hr-HRhrvatski(克罗地亚语)
hu-HUmagyar(匈牙利语)
id-IDBahasa Indonesia(印度尼西亚语)
it-ITitaliano(意大利语)
ja-JP日本の(日语)
kk-KZҚазақ(哈萨克语)
ko-KR한국의(韩语)
lt-LTLietuvos(立陶宛语)
lv-LVLatvijas(拉脱维亚语)
ms-MYBahasa Melayu(马来语)
nb-NOnorsk(挪威语)
nl-NLNederlands(荷兰语)
pl-PLpolski(波兰语)
pt-BRportuguês(葡萄牙语)
pt-PTportuguês(葡萄牙语)
ro-ROromânesc(罗马尼亚语)
ru-RUрусский(俄语)
sk-SKslovenský(斯洛伐克语)
sl-SIslovenski(斯洛文尼亚语)
sr-Cyrl-RSсрпски(塞尔维亚语)
sr-Latn-RSsrpski(塞尔维亚语)
sv-SEsvenska(瑞典语)
th-THไทย(泰语)
tr-TRTürk(土耳其语)
uk-UAукраїнський(乌克兰语)
vi-VNt Việt(越南语)
zh-CN中国(简体中文)
zh-TW中國(繁体中文)