Перейти к содержимому
supastack
Обзор документации
WebTanStack Start

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 с очищенной кукой.