Перейти к содержимому

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

Добавьте поддержку нескольких языков в своё приложение. Используйте Proyecta Content API для локализации редакционного контента или попросите AI подключить i18n-фреймворк прямо в коде.

Proyecta поддерживает два взаимодополняющих подхода к интернационализации создаваемых приложений:

  1. Локализация контента через Proyecta Content API — для редакционного контента (статьи блога, FAQ, маркетинговые тексты), который нужно перевести на несколько языков
  2. i18n на уровне кода через фреймворк переводов — для строк интерфейса, дат, валют и переключения локали в runtime

Оба подхода работают уже сейчас. Выбор зависит от того, что именно вы переводите.

Сам Proyecta поставляется с поддержкой 24 локалей, поэтому продукт отлично разбирается в i18n. Те же паттерны применимы к приложениям, которые вы создаёте внутри него.

Вариант 1: Локализация контента (Proyecta Content API)

Заголовок раздела «Вариант 1: Локализация контента (Proyecta Content API)»

Если вы строите контентоёмкий сайт — блог, базу знаний, маркетинговые страницы, каталог товаров — используйте встроенную поддержку локалей в Content API.

// Create the locales you support
await proyecta.content.locales.create({
/* code: 'en', name: 'English' */
});
await proyecta.content.locales.create({
/* code: 'es', name: 'Español' */
});
await proyecta.content.locales.create({
/* code: 'fr', name: 'Français' */
});
// Then create entries that exist in multiple locales — fetch the right
// translation per request based on the user's locale.

Этот подход подходит, когда:

  • Переводом контента занимаются редакторы без навыков программирования
  • Нужна версионность переводов
  • Требуется публикация для отдельных локалей (запланированная публикация скоро появится — сейчас записи публикуются вручную через API)

Полная документация по Content API — в разделе Управление контентом.

Для строк интерфейса — подписей, кнопок, сообщений об ошибках, дат, валют — попросите AI подключить i18n-фреймворк прямо в ваш проект:

Add internationalization to my app.
Support English, Spanish, French, and Arabic.
Add message catalogs in src/locales/.
Add a language switcher in the header.
Use locale-prefixed URLs like /en/about and /es/about.
Make sure RTL layout works correctly for Arabic.

AI выполнит следующее:

  1. Выберет фреймворк — AI использует i18next с react-i18next (стандарт Proyecta)
  2. Создаст файлы каталогов в src/locales/ (по одному JSON на язык)
  3. Обернёт тексты в вызовы t() (из хука useTranslation библиотеки react-i18next)
  4. Добавит компонент переключения языка
  5. Настроит роутинг URL с префиксами локалей
  6. Обработает RTL-раскладки (dir="rtl") для арабского, иврита и других языков
  7. Отформатирует числа, даты и валюты в соответствии с локалью

Когда базовый язык готов, AI отлично справляется с созданием остальных файлов каталогов:

  • "Translate every string in src/locales/en.json into Spanish, French, German, and Japanese. Use natural, idiomatic phrasing — don't translate brand names."
  • "My app is fully built in English. Add Spanish translations for everything and an es/ route prefix."

Для критически важного контента (юридические, медицинские, финансовые тексты) перед публикацией рекомендуется проверка переводов профессиональным переводчиком.

В большинстве реальных приложений используются оба подхода: i18n на уровне кода — для элементов интерфейса (кнопки, ошибки, навигация), Content API — для редакционного контента (статьи, описания товаров). Они отлично уживаются вместе: i18n-фреймворк обрабатывает файлы каталогов на этапе сборки, Content API отдаёт локализованные записи в runtime.

  1. Сначала определитесь с базовым языком и зафиксируйте тексты. Переводить постоянно меняющееся содержимое крайне неудобно.
  2. Переводите партиями. Не переводите по ходу разработки — дождитесь, пока функциональность станет стабильной.
  3. Тестируйте RTL с самого начала, если планируете поддержку арабского или иврита. RTL-баги незаметны, пока не взглянешь специально.
  4. Указывайте lang и dir на элементе <html>. Браузеры и скринридеры зависят от этих атрибутов.
  5. Используйте Intl для форматирования. Не изобретайте велосипед для дат и валют — применяйте Intl.DateTimeFormat и Intl.NumberFormat.
  • UI управления локалями прямо в Builder — выбор локалей, просмотр покрытия переводами, редактирование каталогов без выхода из Proyecta
  • Автоперевод при сохранении новых строк
  • Готовые к i18n шаблоны проектов с предварительно настроенным фреймворком