Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"v8.9.004.05.2026
- "Добавить команду init"v7.5.930.12.2025
- "Внедрена validatePrefix и добавлен шаг 14: Обработка страниц 404 с локализованными маршрутами."v7.4.011.12.2025
- "Добавлен шаг 13: Получение текущей локали в ваших server actions (опционально)"v7.3.905.12.2025
- "Добавить шаг 13: Адаптация Nitro"v7.2.318.11.2025
- "Исправлено значение префикса по умолчанию путем добавления функции getPrefix useLocalizedNavigate, LocaleSwitcher и LocalizedLink."v7.1.017.11.2025
- "Обновление документации"v6.5.203.10.2025
- "Добавлено для Tanstack Start"v5.8.109.09.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Переведите ваш Tanstack Start с Intlayer | Интернационализация (i18n)
Содержание
Это руководство демонстрирует, как интегрировать Intlayer для бесшовной интернационализации в проектах Tanstack Start с маршрутизацией, учитывающей локаль, поддержкой TypeScript и современными практиками разработки.
Почему Intlayer лучше альтернатив?
По сравнению с основными решениями, такими как «react-i18next», «use-intl» или «paraglide», Intlayer — это решение со встроенными оптимизациями, такими как:
Intlayer полностью оптимизирован для TanStack Start и обеспечивает многоязычную маршрутизацию, управление файлами cookie, генерацию карты сайта, динамическую загрузку контента и все функции, необходимые для масштабирования ваших усилий по интернационализации (i18n).
Вместо загрузки огромных файлов JSON на свои страницы загружайте только необходимый контент. Intlayer помогает уменьшить размер бандла и страниц до 50 %.
Определение области содержимого вашего приложения облегчает обслуживание крупномасштабных приложений. Вы можете дублировать или удалить отдельную папку функций, не утруждав себя мысленным бременем проверки всей кодовой базы контента. Кроме того, Intlayer полностью типизирован, что обеспечивает точность вашего контента.
Совместное размещение контента уменьшает контекст, необходимый для моделей большого языка (LLM). Intlayer также поставляется с набором инструментов, таких как CLI для проверки отсутствия переводов,LSP, MCP, и навыки агента, чтобы сделать работу разработчика (DX) еще более удобной для агентов ИИ.
Используйте автоматизацию для перевода в своем конвейере CI/CD, используя LLM по вашему выбору за счет вашего поставщика ИИ. Intlayer также предлагает компилятор для автоматизации извлечения контента, а также веб-платформу, которая помогает переводить в фоновом режиме.
Подключение больших файлов JSON к компонентам может привести к проблемам с производительностью и реактивностью. Intlayer оптимизирует загрузку контента во время сборки (build time).
Intlayer — это больше, чем просто решение i18n. Он предоставляет автономный визуальный редактор и полный CMS, чтобы помочь вам управлять многоязычным контентом в реальном времени, упрощая сотрудничество с переводчиками, копирайтерами и другими членами команды. Контент может храниться локально и/или удаленно.
Пошаговое руководство по настройке Intlayer в приложении Tanstack Start
См. Шаблон приложения на GitHub.
Создайте проект
Начните с создания нового проекта TanStack Start, следуя руководству Start new project на сайте TanStack Start.
Установите пакеты Intlayer
Установите необходимые пакеты, используя предпочитаемый менеджер пакетов:
bashКопировать кодКопировать код в буфер обмена
intlayer
Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, объявления контента, транспиляции и CLI-команд.
react-intlayer Пакет, который интегрирует Intlayer с приложением React. Он предоставляет провайдеры контекста и хуки для интернационализации в React.
vite-intlayer Включает плагин Vite для интеграции Intlayer с сборщиком Vite, а также промежуточное ПО для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
Конфигурация вашего проекта
Создайте файл конфигурации для настройки языков вашего приложения:
intlayer.config.tsКопировать кодКопировать код в буфер обмена
С помощью этого файла конфигурации вы можете настроить локализованные URL, перенаправление через middleware, имена cookie, расположение и расширение ваших объявлений контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к документации по конфигурации.
Интеграция Intlayer в вашу конфигурацию Vite
Добавьте плагин intlayer в вашу конфигурацию:
vite.config.tsКопировать кодКопировать код в буфер обмена
Плагин Vite
intlayer()используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Также он определяет переменные окружения Intlayer внутри приложения Vite. Дополнительно плагин предоставляет алиасы для оптимизации производительности.Создайте корневой макет
Настройте корневой макет для поддержки интернационализации, используя
useParamsдля определения текущей локали и установив атрибутыlangиdirв тегеhtml.src/routes/__root.tsxКопировать кодКопировать код в буфер обмена
Если вы хотите использовать ваш контент в атрибуте типа
string, таком какalt,title,href,aria-labelи т.д., вы должны вызвать значение функции, например:htmlКопировать кодКопировать код в буфер обмена
Создайте макет локали
Создайте макет, который обрабатывает префикс локали и выполняет валидацию.
src/routes/{-$locale}/route.tsxКопировать кодКопировать код в буфер обмена
Здесь
{-$locale}, это динамический параметр маршрута, который заменяется текущей локалью. Эта нотация делает слот необязательным, позволяя ему работать с такими режимами маршрутизации, как'prefix-no-default'и т. д.Имейте в виду, что этот слот может вызвать проблемы, если вы используете несколько динамических сегментов в одном маршруте (например,
/{-$locale}/other-path/$anotherDynamicPath/...). Для режима'prefix-all'вы можете предпочесть переключить слот на$locale. Для режимов'no-prefix'или'search-params'вы можете полностью удалить слот.Объявите ваш контент
Создавайте и управляйте объявлениями контента для хранения переводов:
src/contents/page.content.tsКопировать кодКопировать код в буфер обмена
Ваши объявления контента могут быть определены в любом месте вашего приложения, как только они включены в директорию
contentDir(по умолчанию,./app). И соответствуют расширению файла объявления контента (по умолчанию,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Для получения дополнительной информации обратитесь к документации по объявлениям контента.
Создание компонентов и хуков с поддержкой локализации
Создайте компонент
LocalizedLinkдля навигации с учетом локали:src/components/localized-link.tsxКопировать кодКопировать код в буфер обмена
Этот компонент выполняет две задачи:
- Удаляет ненужный префикс
{-$locale}из URL. - Вставляет параметр локали в URL, чтобы пользователь был напрямую перенаправлен на локализованный маршрут.
Далее мы можем создать хук
useLocalizedNavigateдля программной навигации:src/hooks/useLocalizedNavigate.tsxКопировать кодКопировать код в буфер обмена
- Удаляет ненужный префикс
Использование Intlayer на ваших страницах
Получайте доступ к вашим словарям контента по всему приложению:
Локализованная главная страница
src/routes/{-$locale}/index.tsxКопировать кодКопировать код в буфер обмена
Чтобы узнать больше о хуке
useIntlayer, обратитесь к документации.Создание компонента переключателя локали
Создайте компонент, который позволит пользователям менять язык:
src/components/locale-switcher.tsxКопировать кодКопировать код в буфер обмена
Чтобы узнать больше о хуке
useLocale, обратитесь к документации.Управление атрибутами HTML
Как показано на шаге 5, вы можете управлять атрибутами
langиdirтегаhtml, используяuseParamsв вашем корневом компоненте. Это гарантирует правильную установку атрибутов как на сервере, так и на клиенте.src/routes/__root.tsxКопировать кодКопировать код в буфер обмена
Добавление middleware
Вы также можете использовать
intlayerProxyдля добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующий cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.Обратите внимание, что для использования
intlayerProxyв продакшене необходимо переместить пакетvite-intlayerизdevDependenciesвdependencies.vite.config.tsКопировать кодКопировать код в буфер обмена
Интернационализация метаданных
Вы также можете использовать хук
getIntlayerдля доступа к вашим словарям контента во всем приложении:src/routes/{-$locale}/index.tsxКопировать кодКопировать код в буфер обмена
Получение локали в серверных действиях
Вы можете захотеть получить доступ к текущей локали внутри ваших серверных действий или конечных точек API. Вы можете сделать это с помощью помощника
getLocaleизintlayer.Вот пример использования серверных функций TanStack Start:
src/routes/{-$locale}/index.tsxКопировать кодКопировать код в буфер обмена
Управление страницами "не найдено"
Когда пользователь посещает несуществующую страницу, вы можете отобразить пользовательскую страницу "не найдено", и префикс локали может повлиять на способ срабатывания страницы "не найдено".
Понимание обработки 404 в TanStack Router с префиксами локали
В TanStack Router обработка страниц 404 с локализованными маршрутами требует многоуровневого подхода:
- Выделенный маршрут 404: Специфический маршрут для отображения интерфейса 404
- Проверка на уровне маршрута: Проверяет префиксы локали и перенаправляет недействительные на 404
- Маршрут catch-all: Перехватывает все несовпадающие пути в сегменте локали
src/routes/{-$locale}/404.tsxКопировать кодКопировать код в буфер обмена
src/routes/{-$locale}/route.tsxКопировать кодКопировать код в буфер обмена
src/routes/{-$locale}/$.tsxКопировать кодКопировать код в буфер обмена
Извлечение содержимого ваших компонентов
НеобязательноЕсли у вас есть существующая кодовая база, преобразование тысяч файлов может занять много времени.
Чтобы упростить этот процесс, Intlayer предлагает компилятор / экстрактор для преобразования ваших компонентов и извлечения содержимого.
Чтобы настроить его, вы можете добавить раздел
compilerв ваш файлintlayer.config.ts:intlayer.config.tsКопировать кодКопировать код в буфер обмена
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Остальная часть вашей конфигурации compiler: { /** * Указывает, должен ли быть включен компилятор. */ enabled: true, /** * Определяет путь к выходным файлам */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Указывает, должны ли компоненты сохраняться после преобразования. Таким образом, компилятор можно запустить только один раз для преобразования приложения, а затем удалить. */ saveComponents: false, /** * Префикс ключа словаря */ dictionaryKeyPrefix: "", }, }; export default config;Запустите экстрактор для преобразования компонентов и извлечения содержимого
bashКопировать кодКопировать код в буфер обмена
Генерация карты сайта (Sitemap)
НеобязательноIntlayer поставляется со встроенным генератором карты сайта, который поможет вам легко создать карту сайта для вашего приложения. Он учитывает локализованные маршруты и добавляет необходимые метаданные для поисковых систем.
Создаваемая Intlayer карта сайта поддерживает пространство имен
xhtml:link(Hreflang XML Extensions). В отличие от стандартных генераторов карт сайта, которые просто перечисляют прямые URL-адреса, Intlayer автоматически создает необходимые двусторонние связи между всеми языковыми версиями страницы (например,/about,/about?lang=frи/about?lang=es). Это гарантирует, что поисковые системы будут правильно индексировать и показывать нужную языковую версию соответствующей аудитории.Чтобы использовать его, вам сначала нужно настроить ваш файл
vite.config.ts, чтобы включить предварительный рендеринг (pre-rendering) для ваших локализованных маршрутов и отключить генерацию карты сайта по умолчанию в TanStack Start.vite.config.tsКопировать кодКопировать код в буфер обмена
Затем создайте маршрут
src/routes/sitemap[.]xml.ts, который использует функциюgenerateSitemap:src/routes/sitemap[.]xml.tsКопировать кодКопировать код в буфер обмена
Настройка TypeScript
Intlayer использует расширение модулей (module augmentation), чтобы использовать преимущества TypeScript и сделать вашу кодовую базу более надежной.
Убедитесь, что ваша конфигурация TypeScript включает автоматически сгенерированные типы:
tsconfig.jsonКопировать кодКопировать код в буфер обмена
Конфигурация Git
Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш Git-репозиторий.
Чтобы сделать это, вы можете добавить следующие инструкции в ваш файл .gitignore:
Копировать код в буфер обмена
Расширение VS Code
Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное расширение Intlayer для VS Code.
Установить из VS Code Marketplace
Это расширение предоставляет:
- Автозаполнение для ключей переводов.
- Обнаружение ошибок в реальном времени для отсутствующих переводов.
- Встроенный просмотр переведённого контента.
- Быстрые действия для лёгкого создания и обновления переводов.
Для получения дополнительной информации о том, как использовать расширение, обратитесь к документации расширения Intlayer для VS Code.
Продвинутые возможности
Для расширения возможностей вы можете реализовать визуальный редактор или вынести ваш контент во внешний CMS.