本地化是通过更改语言或内容来调整产品以为其他市场提供服务的过程。 通过本地化工作负载,你可以触及更广泛的受众,并为客户提供最佳、最个性化的体验。 例如,对于默认语言不是英语的用户而言,微软 Fabric 工作负载中心的本地化工作负载更具吸引力。
下图显示了工作负荷中心中本地化工作负荷的示例。
对于 Fabric 工作负载,本地化涉及两个方面:
使用 Fabric 门户语言在 iframe 中翻译文本(独立于 Fabric shell)。
启用对 Fabric shell 中使用的关键字的翻译,例如工作负载名称、项目名称和工作负载描述。 这些字符串当前直接在清单文件中找到(
product.json和item.json)。有关本地化的所有字符串的说明,请参阅本文后面的 本地化目标 。
支持的语言
Fabric 目前支持以下 44 种语言:
| 语言代码 | 语言 |
|---|---|
| ar | العربية(阿拉伯语) |
| bg | български(保加利亚语) |
| ca | català(加泰罗尼亚语) |
| cs | čeština(捷克语) |
| 大 | dansk(丹麦语) |
| 德 | Deutsche(德语) |
| EL | ελληνικά(希腊语) |
| zh-CN | English(英语) |
| es | español(西班牙语) |
| et | eesti(爱沙尼亚语) |
| 欧盟 | Euskal(巴斯克语) |
| fi | suomi(芬兰语) |
| 法国 | français(法语) |
| gl | galego(加利西亚语) |
| 他 | עברית(希伯来语) |
| 你好 | हिन्दी(印地语) |
| 小时 | hrvatski(克罗地亚语) |
| 胡 | magyar(匈牙利语) |
| 身份证 | Bahasa Indonesia(印度尼西亚语) |
| 它 | italiano(意大利语) |
| ja | 日本の(日语) |
| kk | Қазақ(哈萨克语) |
| ko | 한국의(韩语) |
| lt | Lietuvos(立陶宛语) |
| 级别 | Latvijas(拉脱维亚语) |
| 毫秒 | Bahasa Melayu(马来语) |
| 铌 | norsk(挪威语) |
| 荷兰 | Nederlands(荷兰语) |
| pl | polski(波兰语) |
| pt-BR | português(葡萄牙语 - 巴西) |
| 葡萄牙语-葡萄牙 (pt-PT) | português(葡萄牙语 - 葡萄牙) |
| ro | românesc(罗马尼亚语) |
| 如 | русский(俄语) |
| 斯克 | slovenský(斯洛伐克语) |
| SL | slovenski(斯洛文尼亚语) |
| sr-Cyrl | српски(塞尔维亚语 - 西里尔字符) |
| sr-Latn | srpski(塞尔维亚语 - 拉丁字符) |
| SV | svenska(瑞典语) |
| th | ไทย(泰语) |
| tr | Türk(土耳其语) |
| 英国 | український(乌克兰语) |
| vi | t Việt(越南语) |
| zh-Hans | 中国(简体中文) |
| zh-Hant | 中國(繁体中文) |
可以选择提供其中一些或全部语言。 唯一需要的语言是英语(美国),因为它是 Fabric 的默认语言。
包结构
清单中的所有字符串都必须替换为键。 每个键的值位于单独的文件中。
例如,如果 product.json 清单以前按如下所示启动:
{
"name": "Product",
"displayName": "Fabric Sample Workload",
"fullDisplayName": "Fabric Sample Workload",
"description": "Sample Workload Description",
"favicon": "assets/briefcase.png",
"icon": {
"name": "assets/briefcase.png"
},
"homePage": {
...
您的product.json清单现在应类似于以下示例:
{
"name": "Product",
"displayName": "Workload_Display_Name",
"fullDisplayName": "Workload_Display_Name_Full",
"description": "Workload_Description",
"favicon": "assets/images/briefcase.png",
"icon": {
"name": "assets/images/briefcase.png"
},
"homePage": {
...
若要支持本地化,包必须具有以下结构:
FE/
└── assets/
├── images/
| └── # the images and icons that were previously under the assets folder directly
└── locales/
├── en-US/
| └── translations.json
├── es/
| └── translations.json
├── de/
| └── translations.json
├── fr/
| └── translations.json
└── # more locales
每个区域设置都有其自己的文件夹,位于assets/locales之下。 每个区域设置都包含一个文件,translations.json。 此文件包含键/值对的字典。 例如,英语的 translations.json 文件可能包含:
{
"Workload_Display_Name" : "Fabric Sample Workload",
"Workload_Display_Name_Full" : "Fabric Sample Workload",
"Workload_Description": "Sample Workload Description"
}
而西班牙语的 translation.json 文件可能包含:
{
"Workload_Display_Name" : "Carga de trabajo de muestra",
"Workload_Display_Name_Full" : "Carga de trabajo de muestra",
"Workload_Description": "Descripción del producto"
}
默认行为
- 如前所述,本地化后工作负载的唯一必需语言是英语。
- 如果工作负载已本地化,则必须将所有本地化目标作为英语
translations.json文件中的密钥提供。 - 其他提供的语言并不要求翻译所有键。 任何未翻译的键都默认使用提供的英文版本。 例如,如果工作负载名称应始终采用英语,则无需提供任何其他语言的翻译。
- Fabric 支持本地化和未分配的工作负载。 如果任何映像文件 直接 位于
assets文件夹中,则假设工作负荷未定位。 - 要使工作负荷被视为本地化,该工作负荷在文件夹中必须只有两个子目录
assets:images和locales。assets文件夹中不能有其他文件。
本地化目标
以下所有属性均已本地化:displayName、、fullDisplayName、displayNamePluraldescription、introduction、、title、 tooltip和slogan。
在产品和项清单文件中,这些属性对应于以下属性:
| 名称 | 清单中的模式 | DESCRIPTION |
|---|---|---|
| 项显示名称 | item.displayName |
在大多数情况下显示的项目的显示名称 |
| 复数项显示名称 | item.displayNamePlural |
项目名称的复数形式 |
| 上下文菜单项显示名称 | item.contextMenuItems.displayName |
如果项目具有上下文菜单,例如用于运行作业的快捷方式,则该项目的显示项名称 |
| 上下文菜单项工具提示 | item.contextMenuItems.tooltip |
如果该项具有上下文菜单入口,则当将鼠标悬停在上方时出现的工具提示 |
| 快速操作项显示名称 | item.quickActionItems.displayName |
如果该项具有快速操作(例如用于运行作业的快捷方式),则操作的显示名称 |
| 快速操作项工具提示 | item.quickActionItems.tooltip |
如果项具有快速操作,则当鼠标悬停在该项上方时,会出现工具提示。 |
| 产品显示名称 | product.displayName |
大多数上下文中显示的工作负荷显示名称 |
| 完整的产品显示名称 | product.fullDisplayName |
完整的工作负荷显示名称 |
| 产品描述 | product.description |
工作负载主页上显示的说明 |
| 学习材料卡片标题 | product.homePage.learningMaterials[].title |
工作负载主页上学习材料卡片的标题 |
| 学习材料卡片说明 | product.homePage.learningMaterials[].description |
工作负载主页上学习材料卡片的说明 |
| 学习材料卡片简介 | product.homePage.learningMaterials[].introduction |
在工作负载主页上推出学习材料卡片(位于标题下方) |
| 自定义操作标题 | product.homePage.newSection.customActions[].title |
主页上的自定义操作卡片标题 |
| 创建体验说明 | product.createExperience.description |
在创建中心中显示的说明 |
| 创建卡片标题 | product.createExperience.cards[].title |
新建卡片的标题 |
| 创建卡片说明 | product.createExperience.cards[].description |
创建卡的说明 |
| 工作负载中心口号 | product.productDetail.slogan |
工作负载中心工作负荷页上显示的标语 |
| 工作负载中心说明 | product.productDetail.description |
工作负荷中心的工作负荷页面上显示的产品说明 |
Fabric 门户的语言
该 workloadClient 代码 提供一个 API 来检索工作负载设置,其中包含 Fabric 门户的当前语言。 例如:
export async function callLanguageGet(workloadClient: WorkloadClientAPI): Promise<string> {
const settings = await workloadClient.settings.get();
return settings.currentLanguageLocale;
}
您可以使用所提供的 currentLanguageLocale 代码,并选择任何想要的框架来继续本地化您的工作负荷。 例如,示例工作负荷存储库使用库 i18next 翻译消息栏的内容,以通知当前语言的用户。