logologo
Start
Handbuch
Entwicklung
Plugins
API
Startseite
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Start
Handbuch
Entwicklung
Plugins
API
Startseite
logologo

Schnellstart

Plugin-Entwicklung: Überblick
Erstes Plugin schreiben
Projektverzeichnisstruktur

Serverseitige Entwicklung

Überblick
Plugin
Collections (Datentabellen)
Datenbankoperationen
DataSourceManager
ResourceManager
ACL-Zugriffskontrolle
Middleware
Cache
Events
Request-Kontext
Migration (Update-Skripte)
Logger (Protokollierung)
I18n (Internationalisierung)
Command (Befehlszeile)
CronJobManager
Tests

Clientseitige Entwicklung

Überblick
Plugin
Kontext
Router
ACL-Zugriffskontrolle
DataSourceManager
Ressourcen
Requests
Stile & Themes
Logger (Protokollierung)
I18n (Internationalisierung)
Tests

Sonstiges

Plugin-Update-Leitfaden
Sprachenliste
Abhängigkeitsverwaltung
Build
Next PagePlugin-Entwicklung: Überblick
KI-Übersetzungshinweis

Diese Dokumentation wurde automatisch von KI übersetzt.

#Internationalisierung

#Internationalisierungsdateien

In Plugins werden die mehrsprachigen Dateien für Frontend und Backend im Ordner src/locale abgelegt.

|- /plugin-i18n
  |- /src
    |- /locale      # Mehrsprachiger Ordner
      |- en-US.ts   # Englische Sprache
      |- zh-CN.ts   # Chinesische Sprache

Fügen Sie einfach die Übersetzungs-Einträge in den entsprechenden mehrsprachigen Dateien (/src/locale/${lang}.ts) hinzu. Wenn Sie eine mehrsprachige Datei zum ersten Mal hinzufügen, müssen Sie die Anwendung neu starten, damit die Änderungen wirksam werden. Sie können die app:getLang API überprüfen, um zu bestätigen, ob die Übersetzungs-Einträge erfolgreich hinzugefügt wurden.

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

#i18n-bezogene APIs

  • 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 ist die globale i18n-Instanz, die typischerweise in der CLI verwendet wird. Zum Beispiel in Kombination mit inquirer, um Kommandozeilen-Interaktionen zu implementieren.

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 ist eine cloneInstance der globalen app.i18n. Der ctx jedes Requests ist vollständig unabhängig und liefert mehrsprachige Informationen basierend auf der Sprache des Clients.

Client-Request-Parameter können im Query-String platziert werden:

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

Oder in den Request-Headern (empfohlen):

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

Beispiel:

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();
    });
  }
}

Rufen Sie http://localhost:13000/api/test-i18n?locale=zh-CN auf.

#ctx.t(text, options) server

#plugin.t() server

#Client

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Hilfsfunktionen

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client