ctx.i18n

Instance i18n dari konteks saat ini, untuk membaca atau berpindah bahasa. Untuk teks terjemahan gunakan ctx.t() secara seragam, jangan gunakan ctx.i18n.t.

Skenario Penggunaan

Semua environment eksekusi RunJS dapat menggunakan ctx.i18n (seperti JSBlock, JSField, JSItem, JSColumn, event flow, aturan linkage, dll.).

Definisi Tipe

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

Properti Umum

PropertiTipeDeskripsi
languagestringKode bahasa yang aktif saat ini (seperti zh-CN, en-US)

Method Umum

changeLanguage(lng)

Mengubah bahasa saat ini.

ParameterTipeDeskripsi
lngstringKode bahasa target (seperti 'en-US', 'zh-CN')

Return Value: Promise<any>, resolve setelah perpindahan bahasa selesai.

Contoh

Membaca Bahasa Saat Ini

const lang = ctx.i18n.language;
// 'zh-CN' | 'en-US' | ...
if (lang.startsWith('zh')) {
  ctx.render(ctx.t('Antarmuka Bahasa Mandarin'));
} else {
  ctx.render(ctx.t('English UI'));
}

Berpindah Bahasa

// Pindah ke Bahasa Inggris
await ctx.i18n.changeLanguage('en-US');

// Pindah ke Bahasa Mandarin
await ctx.i18n.changeLanguage('zh-CN');

Tombol Pindah Bahasa

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' : 'Pindah ke Bahasa Mandarin')}
  </Button>,
);

Hal yang Perlu Diperhatikan

  • Teks terjemahan: gunakan ctx.t() secara seragam, jangan gunakan ctx.i18n.t.

Terkait

  • ctx.t(): Menerjemahkan teks, gunakan method ini secara seragam