logologo
Начало
Руководство
Разработка
Плагины
API
Главная
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Начало
Руководство
Разработка
Плагины
API
Главная
logologo

Быстрый старт

Обзор разработки плагинов
Создание первого плагина
Структура каталогов проекта

Серверная разработка

Обзор
Плагин
Коллекции (таблицы данных)
Операции с базой данных
Управление источниками данных (DataSourceManager)
Управление ресурсами (ResourceManager)
Контроль доступа (ACL)
Промежуточное ПО (Middleware)
Кэш
Событие
Контекст запроса
Миграции
Логгер
Интернационализация (I18n)
Командная строка
Управление задачами Cron (CronJobManager)
Тестирование

Клиентская разработка

Обзор
Плагин
Контекст
Маршрутизатор
Контроль доступа (ACL)
Управление источниками данных (DataSourceManager)
Ресурс
Запрос
Стили и темы
Логгер
Интернационализация (I18n)
Тестирование

Прочее

Руководство по обновлению плагинов
Список языков
Управление зависимостями
Сборка
Next PageОбзор разработки плагинов
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#Интернационализация

#Файлы интернационализации

В плагинах многоязычные файлы как для фронтенда, так и для бэкенда хранятся в папке src/locale.

|- /plugin-i18n
  |- /src
    |- /locale      # Папка локализации
      |- en-US.ts   # Английский язык
      |- zh-CN.ts   # Китайский язык

Добавьте записи перевода в соответствующие многоязычные файлы (/src/locale/${lang}.ts). Если вы добавляете многоязычный файл впервые, необходимо перезапустить приложение, чтобы изменения вступили в силу. Вы можете проверить успешность добавления записей перевода с помощью API app:getLang.

URL по умолчанию: http://localhost:13000/api/app:getLang?locale=zh-CN

#API, связанные с 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)

#Сервер

#app.i18n server

app.i18n — это глобальный экземпляр i18n, который обычно используется в CLI. Например, его можно использовать в сочетании с inquirer для реализации интерактивного взаимодействия в командной строке.

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 — это cloneInstance глобального app.i18n. Контекст (ctx) каждого запроса полностью независим и предоставляет многоязычную информацию в соответствии с языком клиента.

Параметры клиентского запроса можно передавать в строке запроса (query string)

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

Или в заголовках запроса (рекомендуется)

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

Пример

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

Просмотрите http://localhost:13000/api/test-i18n?locale=zh-CN

#ctx.t(text, options) server

#plugin.t() server

#Клиент

#ctx.i18n client

#ctx.t(text, options) client

#plugin.t()

#useT()

#Вспомогательные функции

#tExpr(text) server client

#react-i18next

#useTranslation(ns) client

#withTranslation(ns) client