Skip to content

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"])。

行为:

  1. 优先按 langs 顺序匹配。
  2. 若未匹配到,则使用系统 fallback
  3. 若仍无结果,则返回 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 } }