logologo
Začínáme
Manuál
Vývoj
Pluginy
API
Domů
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Začínáme
Manuál
Vývoj
Pluginy
API
Domů
logologo

Rychlý start

Přehled vývoje pluginů
Vytvoření prvního pluginu
Struktura adresářů projektu

Vývoj na straně serveru

Přehled
Plugin
Kolekce
Databázové operace
Správa zdrojů dat (DataSourceManager)
Správa zdrojů (ResourceManager)
Řízení přístupu (ACL)
Middleware
Cache
Události
Kontext požadavku
Migrace
Protokoly
Internacionalizace (I18n)
Příkazový řádek (Command)
Správa plánovaných úloh (CronJobManager)
Testování

Vývoj na straně klienta

Přehled
Plugin
Kontext
Router
Řízení přístupu (ACL)
Správa zdrojů dat (DataSourceManager)
Zdroje
Požadavky
Styly a motivy
Protokoly
Internacionalizace (I18n)
Testování

Ostatní

Průvodce aktualizací pluginů
Seznam jazyků
Správa závislostí
Sestavení
Next PagePřehled vývoje pluginů
TIP

Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi

#Internationalizace

#Soubory pro internacionalizaci

V pluginech jsou vícejazyčné soubory pro frontend i backend uloženy ve složce src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Složka pro vícejazyčné soubory
      |- en-US.ts   # Anglický jazyk
      |- zh-CN.ts   # Čínský jazyk

Překladové položky stačí přidat do příslušných vícejazyčných souborů (/src/locale/${lang}.ts). Pokud přidáváte vícejazyčný soubor poprvé, je nutné restartovat aplikaci, aby se změny projevily. Můžete zkontrolovat API app:getLang a ověřit, zda byly překladové položky úspěšně přidány.

Výchozí URL: http://localhost:13000/api/app:getLang?locale=zh-CN

#API související s 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 je globální instance i18n, která se obvykle používá v CLI. Například v kombinaci s inquirerem pro implementaci interakcí v příkazovém řádku.

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: 'Vyberte jazyk',
        choices: [
          {
            name: 'Čínština',
            value: 'zh-CN',
          },
          {
            name: 'Angličtina',
            value: 'en-US',
          },
        ],
      });
      await this.app.changeLanguage(answer1);
      const answer2 = await input({
        message: app.i18n.t('Zadejte své jméno'),
      });
      console.log(app.i18n.t(`Vaše jméno je {{name}}`, { name: answer2 }));
    });
  }
}

#app.t(text, options) server

#ctx.i18n server

ctx.i18n je klonovaná instance globálního app.i18n. Každý ctx požadavku je zcela nezávislý a reaguje s vícejazyčnými informacemi na základě jazyka klienta.

Parametry klientského požadavku lze umístit do řetězce dotazu (query string)

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

Nebo do hlaviček požadavku (doporučeno)

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

Příklad

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

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

#ctx.t(text, options) server

#plugin.t() server

#Klient

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Pomocné funkce

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client