For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/modules/i18n.md (or send Accept: text/markdown).
Модуль i18n
Контракт локали, который делит каждая поверхность.
Прежде чем начать
Откройте загруженный проект supastack в Visual Studio Code, используя «Файл» → «Открыть папку», затем выберите «Терминал» → «Новый терминал». Корень репозитория — это папка, содержащая package.json, приложения и пакеты. Запустите команду ниже и оставьте терминал открытым. Если команда не распознается, завершите руководство по установке инструмента, прежде чем продолжить.
Сначала прочтите руководство по платформе. Сервер — это процесс приложения, который отвечает на запросы браузера или телефона. Веб читает apps/web/.env.local, Expo читает apps/mobile/.env.local, а команды миграции базы данных читают корневой .env. Демонстрация без базы данных / панели мониторинга отделена от реальных учетных записей / аутентификации, для которых необходимо перенести Postgres. Для оформления заказа только на телефоне или компьютере требуется отдельно работающий веб-сервер.
- Установите инструменты и получите код
- Изучение команд, файлов и конфигурации
- Пройдите руководство по первому запуску в Интернете
corepack pnpm --filter @supastack/web devНастройка и конфигурация
packages/i18n владеет набором локалей и контрактом разрешения: SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, isAppLocale, resolveLocale, localePath и getDictionary. Веб-маршруты, мобильные строки и транзакционная почта читают через один и тот же пакет.
Порядок разрешения: префикс пути → cookie → Accept-Language → значение по умолчанию. localePath(locale, path) производит канонический href — без префикса для локали по умолчанию, /{locale}/… иначе — и слой прокси это принуждает.
import { getDictionary, localePath, resolveLocale } from "@supastack/i18n";
const locale = resolveLocale([pathLocale, cookie, acceptLanguage]);
const copy = getDictionary(locale).marketing;Рабочий процесс внедрения
Пользовательские строки добавляйте сначала в типы словаря, затем в каждую локаль — набор тестов полноты перевода падает на отсутствующих ключах и на непереведённом английском тексте.
Никогда не ветвите продуктовую логику по локали; словари — это представление. Форматируйте даты, числа и множественные числа через Intl API с разрешённой локалью вместо строковых шаблонов.
Проверка и устранение неполадок
После изменения ключей запускайте тесты пакета i18n плюс набор полноты site-content. Точечно проверьте маршрут с префиксом локали, переключатель языка и определение Accept-Language с очищенной кукой.