Skip to content

i18n zh

laurel Lin edited this page Aug 22, 2026 · 2 revisions

src/i18n.ts — 国际化

翻译数据来自文件系统上的 JSON(lang/en.json、lang/zh.json),不硬编码在 TS 里。

加载方式:

  • 构建时 esbuild 把 lang/*.json 打包进插件(内置默认,保证单文件可独立使用);
  • 运行时 loadTranslationsFromDisk(pluginPath) 从插件所在目录的 lang/ 子文件夹重新读取 JSON 覆盖 内置默认(直接改 lang/*.json 即可,无需重新构建);
  • 无路径 / lang 目录缺失 / 读取失败时保持内置默认,保证不崩。

用法:

  • 所有界面文字一律用 t('ctg.xxx.yyy', [占位0, 占位1], 兜底值?) 查译。
  • 占位符用 Blockbench 的 %0 / %1 …(0 基,与 Language 的 tl 语义一致)。
  • 本模块顶层调用 registerTranslations()(在 esbuild 依赖求值顺序中早于任何调用 t() 的模块), 把词典写入 Blockbench 的 Language 数据。

环境兼容:

  • Blockbench 运行时走全局 tl(当前语言数据 + 英文兜底)。
  • Node 单测 / 逻辑层无 Blockbench 全局时,t() 回退英文词典(同样替换 %N),保证纯逻辑(logic/) 可独立单测。

t(key, vars?, def?)

export function t(key: string, vars?: string | number | (string | number)[], def?: string): string;

registerTranslations()

把插件词典写入 Blockbench 的 Language 数据(addTranslations 按当前语言合并,始终保留 en 兜底)。 被所有用 t() 的模块 import,按依赖求值顺序,这里的顶层调用早于任何 t() 的执行。Node 无 Language 全局时安全跳过。

export function registerTranslations(): void;

loadTranslationsFromDisk(pluginPath?)

运行时从插件所在目录读取 lang/en.json、lang/zh.json,覆盖内置默认并重新注册。pluginPath 为插件 文件路径(index.ts onload 经 Plugins.registered[id].path 传入)。无路径 / 文件缺失 / 读取失败时保持 内置默认(打包进产物的 JSON),保证单文件也能用。

export function loadTranslationsFromDisk(pluginPath?: string): void;

← 返回中文接口文档

Clone this wiki locally