Интернационализация
Чтобы в Rspress реализовать документацию на нескольких языках, нужно выполнить следующее:
- Определите текстовые данные для I18n.
- Настройте список языков —
localesвrspress.config.ts. - Настройте язык по умолчанию —
langвrspress.config.ts. - Создайте файлы документации для каждого языка.
- Настройте боковую панель (sidebar) и навигационную панель (navbar).
- Используйте
useI18nв пользовательских компонентах.
Определение текстовых данных для i18n
Создайте файл i18n.json в текущем рабочем пространстве, рядом с файлом rspress.config.ts:
Определите в этом JSON-файле тексты, необходимые для интернационализации. Определение типа выглядит следующим образом:
Например:
Эти текстовые данные используются как в файле конфигурации, так и в пользовательских компонентах, как описано ниже.
Настройка locales
В rspress.config.ts параметр locales настраивает информацию на уровне сайта для каждого языка, такую как lang, title и description.
themeConfig.locales также содержит все поля из locales, однако в будущем этот параметр будет удалён. Вместо него используйте locales.
Описание других параметров темы, связанных с интернационализацией, см. в разделе тип API.
Настройка lang — языка по умолчанию
После настройки locales задайте язык сайта по умолчанию с помощью параметра lang:
Это важно, потому что Rspress удаляет языковой префикс из маршрутов языка по умолчанию. Например, маршрут /ru/guide/getting-started преобразуется в /guide/getting-started.
Создание документации для каждого языка
После выполнения описанной выше настройки создайте следующую структуру в корневой директории документации:
Здесь документация для разных языков находится в директориях en и ru внутри docs, что делает каждую языковую версию легко различимой.
Настройка файлов _nav.json и _meta.json
Используйте _nav.json и _meta.json для настройки панели навигации и сайдбара. Подробнее см. в разделе Автонавигация.
Настройка навигации _nav.json
При настройке панели навигации через _nav.json поле text может быть i18n-ключом. Например:
Здесь text — это guide. Rspress переводит это значение в Guide или Руководство в зависимости от i18n.json и текущего языка.
Настройка сайдбара _meta.json
При настройке сайдбара через файл _meta.json поле label может быть i18n-ключом. Например:
Здесь label — это gettingStarted. Rspress переводит это значение в Подготовка или Getting Started в зависимости от текущего языка.
Использование useI18n в пользовательских компонентах
При написании MDX или разработке собственной темы пользовательским компонентам также может требоваться локализованный текст. Используйте useI18n для его получения:
Rspress предоставляет хук useI18n для получения текста на нужном языке. Использование выглядит следующим образом:
Для удобной подсказки типов вы можете настроить paths в tsconfig.json:
Затем используйте это следующим образом в компоненте:
Таким образом вы получаете подсказки типов для всех текстовых ключей, определённых в i18n.json.

