> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Модуль i18n

Контракт локали, который делит каждая поверхность.

## Прежде чем начать

Откройте загруженный проект supastack в Visual Studio Code, используя «Файл» → «Открыть папку», затем выберите «Терминал» → «Новый терминал». Корень репозитория — это папка, содержащая package.json, приложения и пакеты. Запустите команду ниже и оставьте терминал открытым. Если команда не распознается, завершите руководство по установке инструмента, прежде чем продолжить.

Сначала прочтите руководство по платформе. Сервер — это процесс приложения, который отвечает на запросы браузера или телефона. Веб читает apps/web/.env.local, Expo читает apps/mobile/.env.local, а команды миграции базы данных читают корневой .env. Демонстрация без базы данных / панели мониторинга отделена от реальных учетных записей / аутентификации, для которых необходимо перенести Postgres. Для оформления заказа только на телефоне или компьютере требуется отдельно работающий веб-сервер.

[Установите инструменты и получите код](https://supastack.dev/ru/docs/web/before-you-start.md)

[Изучение команд, файлов и конфигурации](https://supastack.dev/ru/docs/web/terminal-basics.md)

[Пройдите руководство по первому запуску в Интернете](https://supastack.dev/ru/docs/web/ship-in-5-minutes.md)

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


## Вперёд

[Воркспейсы](https://supastack.dev/ru/docs/modules/workspaces.md)
