ctx.i18n

当前上下文的 i18n 实例,用于读取或切换语言。翻译文案统一使用 ctx.t(),不要使用 ctx.i18n.t

适用场景

所有 RunJS 执行环境均可使用 ctx.i18n(如 JSBlock、JSField、JSItem、JSColumn、事件流、联动规则等)。

类型定义

interface i18n: {
  language: string;
  changeLanguage(lng: string): Promise<any>;
}

常用属性

属性类型说明
languagestring当前激活的语言代码(如 zh-CNen-US

常用方法

changeLanguage(lng)

切换当前语言。

参数类型说明
lngstring目标语言代码(如 'en-US''zh-CN'

返回值Promise<any>,在语言切换完成后 resolve。

示例

读取当前语言

const lang = ctx.i18n.language;
// 'zh-CN' | 'en-US' | ...
if (lang.startsWith('zh')) {
  ctx.render(ctx.t('中文界面'));
} else {
  ctx.render(ctx.t('English UI'));
}

切换语言

// 切换为英文
await ctx.i18n.changeLanguage('en-US');

// 切换为中文
await ctx.i18n.changeLanguage('zh-CN');

语言切换按钮

const { Button } = ctx.libs.antd;
const isZh = ctx.i18n.language.startsWith('zh');
ctx.render(
  <Button onClick={async () => {
    await ctx.i18n.changeLanguage(isZh ? 'en-US' : 'zh-CN');
  }}>
    {ctx.t(isZh ? 'Switch to English' : '切换到中文')}
  </Button>,
);

注意事项

  • 翻译文案:统一使用 ctx.t(),不要使用 ctx.i18n.t

相关

  • ctx.t():翻译文案,统一使用此方法