ctx.i18n
当前上下文的 i18n 实例,用于读取或切换语言。翻译文案统一使用 ctx.t(),不要使用 ctx.i18n.t。
适用场景
所有 RunJS 执行环境均可使用 ctx.i18n(如 JSBlock、JSField、JSItem、JSColumn、事件流、联动规则等)。
类型定义
interface i18n: {
language: string;
changeLanguage(lng: string): Promise<any>;
}
常用属性
| 属性 | 类型 | 说明 |
|---|
language | string | 当前激活的语言代码(如 zh-CN、en-US) |
常用方法
changeLanguage(lng)
切换当前语言。
| 参数 | 类型 | 说明 |
|---|
lng | string | 目标语言代码(如 '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。
相关