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

Швидкий старт

Огляд розробки плагінів
Написання першого плагіна
Структура каталогу проєкту

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

Огляд
Плагін (Plugin)
Колекції (таблиці даних)
Операції з базою даних (Database)
Керування джерелами даних (DataSourceManager)
Керування ресурсами (ResourceManager)
Контроль доступу (ACL)
Проміжне ПЗ (Middleware)
Кеш (Cache)
Подія (Event)
Контекст запиту (Context)
Скрипт оновлення (Migration)
Логи (Logger)
Інтернаціоналізація (I18n)
Командний рядок (Command)
Керування завданнями за розкладом (CronJobManager)
Тестування (Test)

Клієнтська розробка

Огляд
Плагін (Plugin)
Контекст (Context)
Маршрутизатор (Router)
Контроль доступу (ACL)
Керування джерелами даних (DataSourceManager)
Ресурс (Resource)
Запит (Request)
Стилі та теми (Styles & Themes)
Логи (Logger)
Інтернаціоналізація (I18n)
Тестування (Test)

Інше

Посібник з оновлення плагінів
Список мов
Керування залежностями
Збірка
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

Або в заголовках запиту (request headers) (рекомендовано)

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