# 多语言支持
基于开发框架的应用会覆盖多个国家和地区,开发框架支持多语言的能力后,可以做到让一个应用(一个 RPK 文件)同时支持多个语言版本的切换,开发者无需开发多个不同语言的源码项目,避免给项目维护带来困难。
使用系统默认的语言,开发者配置多语言的方式非常简单,只需要定义资源与引用资源两个步骤即可;
# 定义资源文件
资源文件用于存放多个语言的业务信息定义,开发框架使用 JSON 文件保存资源定义;
在项目源码 src 目录下定义 i18n 文件夹,内部放置每个语言地区下的资源定义文件即可;其中文件名定义为:zh.json、en.json;
如果开发者当前产品仅计划支持一种语言,同时还希望用到多语言能力,那么仅声明一个名称为 defaults.json 的文件即可;
每个 JSON 文件的内容格式如下:
{
"app-name":"应用名称",
"message": {
"pageA": {
"text": "pure-text-content",
"format": {
"object": "type-{name}",
"array": "type-{0}"
},
"array": [
"item-type-string",
{
"key": "item-type-object-attribute"
},
["item-type-array"]
],
"plurals": {
"double": "car | cars",
"three": "no apples | one apple | {count} apples",
"format": {
"object": "type-{name}",
"array": "type-{0}"
}
}
}
}
}
页面中通过message.pageA.text
类似的path
引用对应内容"pure-text-content"
;
# 页面中引用资源
页面中多语言的使用语法,主要体现在 ViewModel 的几个函数上,如:$t
,这些方法可以在<template>
或<script>
中使用;
如下代码所示:
<template>
<div>
<text>{{ $t('message.pageA.text') }}</text>
<text>{{ $t('message.pageA.format.object', { name: 'arg-object' }) }}</text>
<text>{{ $t('message.pageA.format.array', ['arg-array']) }}</text>
</div>
</template>
<script>
export default {
onInit() {
// 简单格式化:
this.$t('message.pageA.text');
this.$t('message.pageA.format.object', { name: 'arg-object' });
this.$t('message.pageA.format.array', ['arg-array']);
}
};
</script>
# 简单格式化方法
属性 | 类型 | 参数 | 描述 |
---|---|---|---|
$t | Function | path: String 资源路径 arg0: object | array 格式化参数,非必要参数,根据系统语言完成简单的替换:this.$t('message.pageA.text') |
比如:
// 示例:无额外参数的格式化
// 输出:"pure-text-content"
this.$t('message.pageA.text');
// 示例:额外参数为对象,替换引用内容中的绑定
// 输出:"type-arg-object"
this.$t('message.pageA.format.object', { name: 'arg-object' });
// 示例:额外参数为数组,替换引用内容中的绑定
// 输出:"type-arg-array"
this.$t('message.pageA.format.array', ['arg-array']);
# 获取语言
获取语言功能请参考应用配置。
# 桌面应用名称
桌面的应用名称,需要随着系统切换语言而变成对应的语言名称,可以在 i18n 目录下的每个语言文件中,定义一个 app-name,用于设置不同语言的应用名称。如定义资源文件中的示例
# 语言文件名称
在 i18n 目录下,每个语言文件名必须遵循下列格式:
文件名 | 语言 |
---|---|
zh-CN.json | 中文(简体) |
zh-CN.json | 中文(繁体) |
en.json | 英文 |
de-DE.json | 德语 |
es-ES.json | 意大利语 |
in-ID.json | 印尼语 |
pl-PL.json | 波兰语 |
th.json | 泰语 |
vi-VN.json | 越南语 |