Интернационализация
Добавьте поддержку нескольких языков в своё приложение. Используйте Proyecta Content API для локализации редакционного контента или попросите AI подключить i18n-фреймворк прямо в коде.
Proyecta поддерживает два взаимодополняющих подхода к интернационализации создаваемых приложений:
- Локализация контента через Proyecta Content API — для редакционного контента (статьи блога, FAQ, маркетинговые тексты), который нужно перевести на несколько языков
- i18n на уровне кода через фреймворк переводов — для строк интерфейса, дат, валют и переключения локали в runtime
Оба подхода работают уже сейчас. Выбор зависит от того, что именно вы переводите.
Сам Proyecta поставляется с поддержкой 24 локалей, поэтому продукт отлично разбирается в i18n. Те же паттерны применимы к приложениям, которые вы создаёте внутри него.
Вариант 1: Локализация контента (Proyecta Content API)
Заголовок раздела «Вариант 1: Локализация контента (Proyecta Content API)»Если вы строите контентоёмкий сайт — блог, базу знаний, маркетинговые страницы, каталог товаров — используйте встроенную поддержку локалей в Content API.
// Create the locales you supportawait 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 — в разделе Управление контентом.
Вариант 2: i18n-фреймворк на уровне кода
Заголовок раздела «Вариант 2: i18n-фреймворк на уровне кода»Для строк интерфейса — подписей, кнопок, сообщений об ошибках, дат, валют — попросите 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 выполнит следующее:
- Выберет фреймворк — AI использует
i18nextсreact-i18next(стандарт Proyecta) - Создаст файлы каталогов в
src/locales/(по одному JSON на язык) - Обернёт тексты в вызовы
t()(из хукаuseTranslationбиблиотеки react-i18next) - Добавит компонент переключения языка
- Настроит роутинг URL с префиксами локалей
- Обработает RTL-раскладки (
dir="rtl") для арабского, иврита и других языков - Отформатирует числа, даты и валюты в соответствии с локалью
Автоперевод с помощью AI
Заголовок раздела «Автоперевод с помощью AI»Когда базовый язык готов, 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.
Лучшие практики
Заголовок раздела «Лучшие практики»- Сначала определитесь с базовым языком и зафиксируйте тексты. Переводить постоянно меняющееся содержимое крайне неудобно.
- Переводите партиями. Не переводите по ходу разработки — дождитесь, пока функциональность станет стабильной.
- Тестируйте RTL с самого начала, если планируете поддержку арабского или иврита. RTL-баги незаметны, пока не взглянешь специально.
- Указывайте
langиdirна элементе<html>. Браузеры и скринридеры зависят от этих атрибутов. - Используйте
Intlдля форматирования. Не изобретайте велосипед для дат и валют — применяйтеIntl.DateTimeFormatиIntl.NumberFormat.
- UI управления локалями прямо в Builder — выбор локалей, просмотр покрытия переводами, редактирование каталогов без выхода из Proyecta
- Автоперевод при сохранении новых строк
- Готовые к i18n шаблоны проектов с предварительно настроенным фреймворком