I18n API
Yumeri 提供了一个轻量级的国际化(i18n)文本管理,用于注册、获取与替换多语言文本点,支持用户语言优先级和系统回退语言双重机制。
构造参数
constructor(fallback?: string[])
- fallback:
string[]
系统默认回退语言列表,按优先级从高到低排列。
当用户语言中无匹配时,会依次使用此列表查找。
默认值:['en']
方法说明
注意以下方法需在core.i18n调用。
register(key: string, lang: Record<string, string>): void
注册一个文本点及其多语言翻译。
参数:
- key: 文本点键名(如
"app.title") - lang: 各语言的翻译映射(如
{ "en": "Hello", "zh-cn": "你好" })
该方法及其下方法可使用 ctx.i18n 调用,以便追踪更改
register(map: Record<string, any>): void
以对象形式批量注册多层级翻译文本。
支持自动展开嵌套结构(如 { app: { title: { en: "Hello" } } })。
setFallback(fallback: string[]): void
设置新的系统回退语言列表。
参数:
- fallback: 要设置的语言数组。
isRegistered(key: string): boolean
判断指定文本点是否已注册。
参数:
- key: 文本点名称。
返回:
- 是否存在对应的注册内容。
delete(key: string): void
删除指定文本点的所有语言内容。
参数:
- key: 文本点名称。
get(key: string, langs?: string[]): string
根据语言优先级列表获取对应翻译文本。
参数:
- key: 文本点名称。
- langs: 用户语言优先级数组(例如
["zh-cn", "zh", "en"])。
行为:
- 优先按
langs顺序匹配。 - 若未匹配到,则使用系统
fallback。 - 若仍无结果,则返回
key本身(保证界面可视内容)。
该方法可使用
session.get(key)方式调用,已自动处理用户 fallback 排序。
replaceAll(input: string, langs?: string[]): string
批量替换字符串中的文本点。
会自动识别模板格式 并替换为对应翻译。
参数:
- input: 含占位符的字符串。
- langs: 用户语言优先级数组(可选)。
示例:
"Hello {{app.name}}" → "Hello 世界"
all(): Record<string, Record<string, string>>
返回当前所有已注册的翻译数据。
返回:
- 多语言数据对象,结构为
{ key: { lang: text } }
