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

Démarrage rapide

Aperçu du développement de plugins
Créer son premier plugin
Structure des répertoires du projet

Développement côté serveur

Aperçu
Plugin
Collections (Tables de données)
Database (Opérations)
DataSourceManager (Gestion des sources de données)
ResourceManager (Gestion des ressources)
ACL (Contrôle des permissions)
Middleware
Cache
Event (Événement)
Context (Contexte de la requête)
Migration (Script de mise à niveau)
Logger (Journal)
I18n (Internationalisation)
Command (Ligne de commande)
CronJobManager (Gestion des tâches planifiées)
Test

Développement côté client

Aperçu
Plugin
Context (Contexte)
Router (Routeur)
ACL (Contrôle des permissions)
DataSourceManager (Gestion des sources de données)
Resource (Ressource)
Request (Requête)
Styles & Themes
Logger (Journal)
I18n (Internationalisation)
Test

Autres

Guide de mise à niveau des plugins
Liste des langues
Gestion des dépendances
Build
Next PageAperçu du développement de plugins
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Internationalisation

#Fichiers d'internationalisation

Dans les plugins, les fichiers multilingues, tant pour le frontend que pour le backend, sont stockés dans le dossier src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Dossier multilingue
      |- en-US.ts   # Anglais
      |- zh-CN.ts   # Chinois

Il vous suffit d'ajouter les entrées de traduction dans les fichiers multilingues correspondants (/src/locale/${lang}.ts). Si vous ajoutez un nouveau fichier multilingue pour la première fois, vous devrez redémarrer l'application pour que les modifications prennent effet. Vous pouvez vérifier l'API app:getLang pour vous assurer que les entrées de traduction ont été ajoutées avec succès.

URL par défaut : http://localhost:13000/api/app:getLang?locale=zh-CN

#API liées à l'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)

#Serveur

#app.i18n server

app.i18n est l'instance i18n globale, généralement utilisée dans les interfaces en ligne de commande (CLI). Par exemple, elle peut être combinée avec inquirer pour implémenter des interactions en ligne de commande.

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 est une cloneInstance de l'instance app.i18n globale. Le ctx de chaque requête est entièrement indépendant et répond avec les informations multilingues basées sur la langue du client.

Les paramètres de requête du client peuvent être placés dans la chaîne de requête (query string) :

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

Ou dans les en-têtes de requête (recommandé) :

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

Exemple

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

Consultez 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()

#Fonctions utilitaires

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client