语言包

使用语言包可以将 DSL 中以 ::开头 或 $L(Word)标记的字符串,翻译为用户设定的语言。

约定

  1. 示例中约定应用根目录为 /data/app, 实际编写时需替换为应用根目录。
  2. 使用 <> 标识自行替换的内容。 例如: icon-<图标名称>, 实际编写时应替换为: icon-foo, icon-bar ...

结构

语言包由一组与 DSL 同名 yaml 文件构成, 语言包存放在应用 langs 目录。

<ISO 639-1 语言编码(全小写)>/global.yml 全局语言包文件

<ISO 639-1 语言编码(全小写)>/<Widget 目录>/<Widget 文件名>.yaml DSL 文件语言包文件 优先匹配

ISO 639-1 standard language codes

简体中文: zh-cn

语言包文件说明
/data/app/langs/zh-cn/global.yml全局语言包文件
/data/app/langs/zh-cn/models/pet.mod.ymlModel pet 语言包
/data/app/langs/zh-cn/models/user/pet.mod.ymlModeluser.pet 语言包
/data/app/langs/zh-cn/tables/pet.mod.ymlTable pet 语言包

繁体中文: zh-hk

语言包文件说明
/data/app/langs/zh-hk/global.yml全局语言包文件
/data/app/langs/zh-hk/models/pet.mod.ymlModel pet 语言包
/data/app/langs/zh-hk/models/user/pet.mod.ymlModeluser.pet 语言包
/data/app/langs/zh-hk/tables/pet.mod.ymlTable pet 语言包

在 DSL 中使用

使用 :: 前缀, 或 $L(<字符串>) 声明的字符串,DSL 解析时, 将被替换为语言包中的字符串。

在DSL中, 带 :: 前缀的字符不希望被替换, 可以使用\转义,写为 \::

语言包文件:

/data/app/langs/zh-cn/global.yml

Pet: 宠物

/data/app/langs/zh-cn/models/pet.mod.yml

Pet Name: 宠物名称

/data/app/langs/zh-hk/global.yml

Pet: 寵物

/data/app/langs/zh-hk/models/pet.mod.yml

Pet Name: 寵物名稱

DSL 文件:

/data/app/models/pet.mod.yao

{
"name": "::Pet",
"table": { "name": "pet", "comment": "$L(Pet) Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "::Pet Name",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

解析结果

当语言环境变量 YAO_LANG=zh-cn 时, DSL 将解析为:

{
"name": "宠物",
"table": { "name": "pet", "comment": "宠物 Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "宠物名称",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

当语言环境变量 YAO_LANG=zh-hk 时, DSL 将解析为:

{
"name": "寵物",
"table": { "name": "pet", "comment": "寵物 Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "寵物名稱",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

未找到可匹配的语言包时,DSL 将解析为:

{
"name": "Pet",
"table": { "name": "pet", "comment": "Pet Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "Pet Name",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

在 Script 中使用

使用 $L() 函数, 进行多语言替换

/data/app/scripts/test.js

function Bar() {
return $L("Pet");
}

当语言环境变量 YAO_LANG=zh-cn 时:

yao run scripts.test.Bar
# 宠物

当语言环境变量 YAO_LANG=zh-hk 时:

yao run scripts.test.Bar
# 寵物

未找到可匹配的语言包时:

yao run scripts.test.Bar
# Pet

语言包

使用语言包可以将 DSL 中以 ::开头 或 $L(Word)标记的字符串,翻译为用户设定的语言。

约定

  1. 示例中约定应用根目录为 /data/app, 实际编写时需替换为应用根目录。
  2. 使用 <> 标识自行替换的内容。 例如: icon-<图标名称>, 实际编写时应替换为: icon-foo, icon-bar ...

结构

语言包由一组与 DSL 同名 yaml 文件构成, 语言包存放在应用 langs 目录。

<ISO 639-1 语言编码(全小写)>/global.yml 全局语言包文件

<ISO 639-1 语言编码(全小写)>/<Widget 目录>/<Widget 文件名>.yaml DSL 文件语言包文件 优先匹配

ISO 639-1 standard language codes

简体中文: zh-cn

语言包文件说明
/data/app/langs/zh-cn/global.yml全局语言包文件
/data/app/langs/zh-cn/models/pet.mod.ymlModel pet 语言包
/data/app/langs/zh-cn/models/user/pet.mod.ymlModeluser.pet 语言包
/data/app/langs/zh-cn/tables/pet.mod.ymlTable pet 语言包

繁体中文: zh-hk

语言包文件说明
/data/app/langs/zh-hk/global.yml全局语言包文件
/data/app/langs/zh-hk/models/pet.mod.ymlModel pet 语言包
/data/app/langs/zh-hk/models/user/pet.mod.ymlModeluser.pet 语言包
/data/app/langs/zh-hk/tables/pet.mod.ymlTable pet 语言包

在 DSL 中使用

使用 :: 前缀, 或 $L(<字符串>) 声明的字符串,DSL 解析时, 将被替换为语言包中的字符串。

在DSL中, 带 :: 前缀的字符不希望被替换, 可以使用\转义,写为 \::

语言包文件:

/data/app/langs/zh-cn/global.yml

Pet: 宠物

/data/app/langs/zh-cn/models/pet.mod.yml

Pet Name: 宠物名称

/data/app/langs/zh-hk/global.yml

Pet: 寵物

/data/app/langs/zh-hk/models/pet.mod.yml

Pet Name: 寵物名稱

DSL 文件:

/data/app/models/pet.mod.yao

{
"name": "::Pet",
"table": { "name": "pet", "comment": "$L(Pet) Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "::Pet Name",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

解析结果

当语言环境变量 YAO_LANG=zh-cn 时, DSL 将解析为:

{
"name": "宠物",
"table": { "name": "pet", "comment": "宠物 Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "宠物名称",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

当语言环境变量 YAO_LANG=zh-hk 时, DSL 将解析为:

{
"name": "寵物",
"table": { "name": "pet", "comment": "寵物 Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "寵物名稱",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

未找到可匹配的语言包时,DSL 将解析为:

{
"name": "Pet",
"table": { "name": "pet", "comment": "Pet Table" },
"columns": [
{ "name": "id", "comment": "ID", "type": "ID" },
{
"name": "name",
"comment": "Pet Name",
"type": "string",
"length": 80,
"index": true,
"nullable": true
}
]
}

在 Script 中使用

使用 $L() 函数, 进行多语言替换

/data/app/scripts/test.js

function Bar() {
return $L("Pet");
}

当语言环境变量 YAO_LANG=zh-cn 时:

yao run scripts.test.Bar
# 宠物

当语言环境变量 YAO_LANG=zh-hk 时:

yao run scripts.test.Bar
# 寵物

未找到可匹配的语言包时:

yao run scripts.test.Bar
# Pet