ctx.i18n

Instance i18n của ngữ cảnh hiện tại, dùng để đọc hoặc chuyển đổi ngôn ngữ. Văn bản dịch sử dụng đồng nhất ctx.t(), không sử dụng ctx.i18n.t.

Kịch bản áp dụng

Tất cả môi trường thực thi RunJS đều có thể sử dụng ctx.i18n (như JSBlock, JSField, JSItem, JSColumn, luồng sự kiện, quy tắc liên kết, v.v.).

Định nghĩa kiểu

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

Thuộc tính thường dùng

Thuộc tínhKiểuMô tả
languagestringMã ngôn ngữ đang kích hoạt hiện tại (như zh-CN, en-US)

Phương thức thường dùng

changeLanguage(lng)

Chuyển đổi ngôn ngữ hiện tại.

Tham sốKiểuMô tả
lngstringMã ngôn ngữ đích (như 'en-US', 'zh-CN')

Giá trị trả về: Promise<any>, resolve sau khi chuyển đổi ngôn ngữ hoàn tất.

Ví dụ

Đọc ngôn ngữ hiện tại

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

Chuyển đổi ngôn ngữ

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

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

Button chuyển đổi ngôn ngữ

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>,
);

Lưu ý

  • Văn bản dịch: sử dụng đồng nhất ctx.t(), không sử dụng ctx.i18n.t.

Liên quan

  • ctx.t(): Dịch văn bản, sử dụng phương thức này một cách đồng nhất