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

Início rápido

Visão geral do desenvolvimento de plugins
Escrever o primeiro plugin
Estrutura de diretórios do projeto

Desenvolvimento do lado do servidor

Visão Geral
Plugin
Collections (Tabelas de dados)
Database (Operações de banco de dados)
DataSourceManager (Gerenciamento de fontes de dados)
ResourceManager (Gerenciamento de recursos)
ACL (Controle de acesso)
Middleware
Cache
Event (Evento)
Context (Contexto da requisição)
Migration (Script de atualização)
Logger (Log)
I18n (Internacionalização)
Command (Linha de comando)
CronJobManager (Gerenciamento de tarefas agendadas)
Test (Teste)

Desenvolvimento do lado do cliente

Visão Geral
Plugin
Context (Contexto)
Router (Rotas)
ACL (Controle de acesso)
DataSourceManager (Gerenciamento de fontes de dados)
Resource (Recurso)
Request (Requisição)
Estilos e temas
Logger (Log)
I18n (Internacionalização)
Test (Teste)

Outros

Guia de atualização de plugins
Lista de idiomas
Gerenciamento de dependências
Build
Next PageVisão geral do desenvolvimento de plugins
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#Internacionalização

#Arquivos de Internacionalização

Nos plugins, os arquivos multilíngues tanto para o frontend quanto para o backend são armazenados na pasta src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Pasta de múltiplos idiomas
      |- en-US.ts   # Idioma inglês
      |- zh-CN.ts   # Idioma chinês

Basta adicionar as entradas de tradução nos arquivos multilíngues correspondentes (/src/locale/${lang}.ts). Se for a primeira vez que você adiciona um arquivo multilíngue, é necessário reiniciar a aplicação para que as alterações entrem em vigor. Você pode verificar a API app:getLang para confirmar se as entradas de tradução foram adicionadas com sucesso.

URL padrão: http://localhost:13000/api/app:getLang?locale=zh-CN

#APIs Relacionadas ao 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()
  • utilitários
    • tExpr(text, options)
  • react-i18next
    • useTranslation(ns)
    • withTranslation(ns)

#Servidor

#app.i18n servidor

app.i18n é a instância global de i18n, geralmente usada em CLIs. Por exemplo, em combinação com o Inquirer para implementar interações de linha de comando.

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 é uma cloneInstance da instância global app.i18n. O ctx de cada requisição é completamente independente e responde com informações multilíngues com base no idioma do cliente.

Os parâmetros de requisição do cliente podem ser incluídos na query string:

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

Ou nos cabeçalhos da requisição (recomendado):

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

Exemplo

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

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

#Funções Utilitárias

#tExpr(text) servidor cliente

#react-i18next

#useTranslation(ns) cliente

#withTranslation(ns) cliente