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

Snelstart

Overzicht plug-inontwikkeling
Eerste plug-in schrijven
Projectstructuur

Server-side ontwikkeling

Overzicht
Plug-in
Collecties
Database
DataSourceManager
ResourceManager
ACL
Middleware
Cache
Events
Context
Migratie
Logger
I18n
Commando
CronJobManager
Test

Client-side ontwikkeling

Overzicht
Plug-in
Context
Router
ACL
DataSourceManager
Resource
Request
Stijlen & Thema's
Logger
I18n
Test

Overig

Upgrade-gids voor plug-ins
Talenlijst
Dependency-beheer
Build
Next PageOverzicht plug-inontwikkeling
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#Internationalisatie

#Internationalisatiebestanden

Binnen plugins vindt u de meertalige bestanden voor zowel de frontend als de backend in de map src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Map voor meertalige bestanden
      |- en-US.ts   # Engelse taal
      |- zh-CN.ts   # Chinese taal

U kunt vertaalitems toevoegen in de corresponderende meertalige bestanden (/src/locale/${lang}.ts). Als u voor het eerst een meertalig bestand toevoegt, moet u de applicatie opnieuw opstarten om de wijzigingen door te voeren. U kunt de app:getLang API gebruiken om te controleren of de vertaalitems succesvol zijn toegevoegd.

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

#Gerelateerde i18n API's

  • 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 is de globale i18n-instantie, die doorgaans in de CLI wordt gebruikt. U kunt deze bijvoorbeeld combineren met inquirer om interacties via de commandoregel te implementeren.

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 is een klooninstantie van de globale app.i18n. De ctx van elke aanvraag is volledig onafhankelijk en reageert met meertalige informatie op basis van de taal van de client.

Clientaanvraagparameters kunnen in de query string worden geplaatst:

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

Of in de request headers (aanbevolen):

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

Voorbeeld

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

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

#ctx.t(text, options) server

#plugin.t() server

#Client

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Hulpprogramma's

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client