logologo
Mulai
Panduan
Pengembangan
Plugin
API
Beranda
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Mulai
Panduan
Pengembangan
Plugin
API
Beranda
logologo

Mulai Cepat

Gambaran Umum Pengembangan Plugin
Menulis Plugin Pertama
Struktur Direktori Proyek

Pengembangan Sisi Server

Ikhtisar
Plugin
Collections
Operasi Database
Manajemen Sumber Data
Manajemen Sumber Daya
ACL
Middleware
Cache
Event
Konteks Permintaan
Skrip Migrasi
Logger
I18n
Command
Manajemen Tugas Terjadwal
Test

Pengembangan Sisi Klien

Ikhtisar
Plugin
Konteks
Router
ACL
Manajemen Sumber Data
Resource
Request
Gaya & Tema
Logger
I18n
Test

Lainnya

Panduan Peningkatan Plugin
Daftar Bahasa
Manajemen Dependensi
Build
Next PageGambaran Umum Pengembangan Plugin
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Internasionalisasi

#File Internasionalisasi

Di dalam plugin, file multi-bahasa untuk frontend dan backend disimpan di folder src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Folder multi-bahasa
      |- en-US.ts   # Bahasa Inggris
      |- zh-CN.ts   # Bahasa Mandarin

Anda cukup menambahkan entri terjemahan di file multi-bahasa yang sesuai (/src/locale/${lang}.ts). Jika ini adalah pertama kalinya Anda menambahkan file multi-bahasa, Anda perlu me-restart aplikasi agar perubahan berlaku. Anda dapat memeriksa API app:getLang untuk memverifikasi apakah entri terjemahan telah berhasil ditambahkan.

URL default: http://localhost:13000/api/app:getLang?locale=zh-CN

#API Terkait i18n

  • server
    • app.i18n
    • app.t(text, options)
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
  • client
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
    • useT()
  • utils
    • tExpr(text, options)
  • react-i18next
    • useTranslation(ns)
    • withTranslation(ns)

#Server

#app.i18n server

app.i18n adalah instance i18n global yang umumnya digunakan dalam CLI. Contohnya, dapat digabungkan dengan inquirer untuk mengimplementasikan interaksi baris perintah.

import select from '@inquirer/select';
import input from '@inquirer/input';

export class PluginSampleI18nServer extends Plugin {
  load() {
    this.app.command('test-i18n').action(async () => {
      const answer1 = await select({
        message: 'Select a language',
        choices: [
          {
            name: '中文',
            value: 'zh-CN',
          },
          {
            name: 'English',
            value: 'en-US',
          },
        ],
      });
      await this.app.changeLanguage(answer1);
      const answer2 = await input({
        message: app.i18n.t('Enter your name'),
      });
      console.log(app.i18n.t(`Your name is {{name}}`, { name: answer2 }));
    });
  }
}

#app.t(text, options) server

#ctx.i18n server

ctx.i18n adalah cloneInstance dari app.i18n global. Setiap ctx permintaan sepenuhnya independen dan merespons dengan informasi multi-bahasa berdasarkan bahasa klien.

Parameter permintaan klien dapat ditempatkan di query string.

GET /?locale=en-US HTTP/1.1
Host: localhost:13000

Atau di request headers (direkomendasikan).

GET / HTTP/1.1
Host: localhost:13000
X-Locale: en-US

Contoh

export class PluginSampleI18nServer extends Plugin {
  load() {
    this.app.use(async (ctx, next) => {
      if (ctx.path === '/api/test-i18n') {
        ctx.body = `${ctx.i18n.t('Hello')} ${ctx.i18n.t('World')}`;
      }
      await next();
    });
  }
}

Lihat http://localhost:13000/api/test-i18n?locale=zh-CN

#ctx.t(text, options) server

#plugin.t() server

#Klien

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Fungsi Utilitas

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client