Skip to content

多语言‐文本

muzzik edited this page Jul 6, 2024 · 1 revision

多语言文本是为了控制不同国家语言的文本展示而存在,支持 cc.Label、cc.RichText

多语言文本配置

我们要使用多语言文本,首先要添加文本配置,在你的模块下建立任意一个脚本存放,如下图中的 i18n/resources_language_label.ts 就是 language 模块的文本配置

68747470733a2f2f67697465652e636f6d2f6d757a7a696b2f696d616765732f7261772f6d61737465722f6d6b2d6672616d65776f726b2f6d6f64756c652f6c616e67756167652f312f312e706e67

内容如下

import mk from "mk";
import * as cc from "cc";

export default new mk.language_.label_data(cc.js.getClassName(替换为模块class), {
	示例: {
		en_us: "template-{0}",
		zh_cn: "示例-{0}",
	},
});

示例 是多语言键,内容为对应的多语言文本,cc.js.getClassName(替换为模块class) 是获取模块名,你也可以替换为字符串

多语言文本组件

在添加了文本的配置后,我们就可以添加多语言组件了,选中 Label 组件,添加 mk_language_label 组件

68747470733a2f2f67697465652e636f6d2f6d757a7a696b2f696d616765732f7261772f6d61737465722f6d6b2d6672616d65776f726b2f6d6f64756c652f6c616e67756167652f312f322e706e67

可以看到,类型 就是我们 new mk.language_.label_data(...) 的第一个参数,而 语言标识 就是我们注册的多语言文本资源键

你可以任意切换类型和语言标识,编辑器内容实时更新,框架建议模块只使用自己的多语言资源,除非你使用的是公共资源

文本参数

文本参数是为了替换多语言中的动态内容,而替换成的固定格式字符串

框架默认的格式是 {0}

  • 前缀:{
  • 后缀:}
  • 中间数字:参数顺序

例: 金币:{0},钻石:{1},参数为:[1, 2],结果为:金币:1,钻石:2

脚本内使用

const label = this.nodes.label.getComponent(mk.language.label)!;

// 设置参数
label.args_ss = ["xxx"];
// 设置类型
label.type_s = "resources_language";
// 设置标记
label.mark_s = resources_language_label.key.示例;
Clone this wiki locally