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

Inicio rápido

Resumen de desarrollo de plugins
Escribir el primer plugin
Estructura de directorios del proyecto

Desarrollo del lado del servidor

Visión general
Plugin
Colecciones
Operaciones de base de datos
Gestión de fuentes de datos
Gestión de recursos
Control de permisos (ACL)
Middleware
Caché
Evento
Contexto de solicitud
Migración (Script de actualización)
Registro (Logger)
Internacionalización (I18n)
Línea de comandos (Command)
Gestión de tareas programadas
Pruebas

Desarrollo del lado del cliente

Visión general
Plugin
Contexto
Enrutador (Router)
Control de permisos (ACL)
Gestión de fuentes de datos
Recurso
Solicitud
Estilos y temas
Registro (Logger)
Internacionalización (I18n)
Pruebas

Otros

Guía de actualización de plugins
Lista de idiomas
Gestión de dependencias
Compilación
Next PageResumen de desarrollo de plugins
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Internacionalización

#Archivos de Internacionalización

En los plugins, los archivos multilingües tanto para el frontend como para el backend se almacenan en la carpeta src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Carpeta multilingüe
      |- en-US.ts   # Idioma inglés
      |- zh-CN.ts   # Idioma chino

Solo necesita añadir las entradas de traducción en los archivos multilingües correspondientes (/src/locale/${lang}.ts). Si es la primera vez que añade un archivo multilingüe, deberá reiniciar la aplicación para que los cambios surtan efecto. Puede verificar si las entradas de traducción se han añadido correctamente consultando la API app:getLang.

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

#APIs relacionadas con i18n

  • Servidor
    • app.i18n
    • app.t(text, options)
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
  • Cliente
    • ctx.i18n
    • ctx.t(text, options)
    • plugin.t()
    • useT()
  • Utilidades
    • tExpr(text, options)
  • react-i18next
    • useTranslation(ns)
    • withTranslation(ns)

#Servidor

#app.i18n servidor

app.i18n es la instancia global de i18n, utilizada generalmente en la CLI. Por ejemplo, se combina con inquirer para implementar interacciones en la línea de comandos.

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) servidor

#ctx.i18n servidor

ctx.i18n es una cloneInstance de la instancia global app.i18n. El ctx de cada solicitud es completamente independiente y responde con información multilingüe según el idioma del cliente.

Los parámetros de la solicitud del cliente se pueden incluir en la cadena de consulta (query string):

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

O en los encabezados de la solicitud (headers) (recomendado):

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

Ejemplo:

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

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

#ctx.t(text, options) servidor

#plugin.t() servidor

#Cliente

#ctx.i18n cliente

#ctx.t(text, options) cliente

#plugin.t()

#useT()

#Funciones de utilidad

#tExpr(text) servidor cliente

#react-i18next

#useTranslation(ns) cliente

#withTranslation(ns) cliente