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

Snabbstart

Översikt: Plugin-utveckling
Skriv ditt första plugin
Projektets katalogstruktur

Server-side-utveckling

Översikt
Plugin
Collections (datatabeller)
Database (databasåtgärder)
DataSourceManager (datakällshantering)
ResourceManager (resurshantering)
ACL (behörighetskontroll)
Middleware
Cache
Event (händelser)
Context (request-kontext)
Migration (uppgraderingsskript)
Logger (loggar)
I18n (internationalisering)
Command (kommandorad)
CronJobManager (schemalagda jobb)
Test (tester)

Klient-side-utveckling

Översikt
Plugin
Context (kontext)
Router (routing)
ACL (behörighetskontroll)
DataSourceManager (datakällshantering)
Resource (resurser)
Request (förfrågningar)
Stilar & teman
Logger (loggar)
I18n (internationalisering)
Test (tester)

Övrigt

Plugin-uppgraderingsguide
Språklista
Beroendehantering
Bygga
Next PageÖversikt: Plugin-utveckling
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Internationalisering

#Internationaliseringsfiler

I plugin lagras flerspråksfiler för både frontend och backend i mappen src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Flerspråksmapp
      |- en-US.ts   # Engelska
      |- zh-CN.ts   # Kinesiska

Lägg till översättningsposter i de motsvarande flerspråksfilerna (/src/locale/${lang}.ts). Om det är första gången ni lägger till en flerspråksfil behöver ni starta om applikationen för att ändringarna ska träda i kraft. Ni kan kontrollera API:et app:getLang för att verifiera att översättningsposterna har lagts till framgångsrikt.

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

#i18n-relaterade API:er

  • 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 är den globala i18n-instansen och används vanligtvis i CLI. Till exempel kan den kombineras med inquirer för att implementera interaktioner i kommandoraden.

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 är en kloninstans av den globala app.i18n. Varje requests ctx är helt oberoende och svarar med flerspråkig information baserat på klientens språk.

Klientens förfrågningsparametrar kan placeras i query stringen

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

Eller i förfrågningshuvudena (rekommenderas)

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

Exempel

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

Besök 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()

#Verktygsfunktioner

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client