Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Добавлена опция splitKeys (один словарь на каждый ключ пространства имен верхнего уровня) для однофайловых структур next-intl / react-intl"v9.0.021.06.2026
- "Добавлена поддержка форматов ICU и i18next"v7.5.013.12.2025
- "Начальная документация плагина Sync JSON"v6.1.605.10.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Sync JSON (i18n bridges) — Синхронизация JSON с поддержкой ICU / i18next
Используйте Intlayer как дополнение к вашему существующему стеку i18n. Этот плагин синхронизирует ваши сообщения JSON со словарями Intlayer, чтобы вы могли:
- Сохраняйте поддержку i18next, next‑intl, react‑intl, vue‑i18n, next‑translate, nuxt‑i18n, Solid‑i18next, svelte‑i18n и других.
- Управляйте и переводите свои сообщения с помощью Intlayer (CLI, CI, провайдеры, CMS) без рефакторинга вашего приложения.
- Создавайте руководства и SEO-контент для каждой экосистемы, предлагая Intlayer в качестве слоя управления JSON.
Заметки и текущая область применения:
- Экспорт в CMS работает для переводов и обычного текста.
- Пока нет поддержки вставок, множественного числа/ICU или продвинутых функций рантайма других библиотек.
- Визуальный редактор пока не поддерживает вывод i18n сторонних библиотек.
Когда использовать этот плагин
- Вы уже используете библиотеку i18n и храните сообщения в JSON-файлах.
- Вы хотите использовать автозаполнение с помощью ИИ, тесты в CI и content ops без изменения вашего рантайма рендеринга.
Установка
Копировать код в буфер обмена
Плагины
Этот пакет предоставляет два плагина:
loadJSON: Загрузка JSON-файлов в словари Intlayer.- Этот плагин используется для загрузки JSON-файлов из источника и их загрузки в словари Intlayer. Он может сканировать всю codebase и искать определенные JSON-файлы.
Этот плагин можно использовать
- если вы используете библиотеку i18n, которая требует определенного расположения для загрузки ваших JSON (например,
next-intl,i18next,react-intl,vue-i18nи т. д.), но вы хотите размещать объявления контента там, где вам удобно в вашей codebase. - Его также можно использовать, если вы хотите получать сообщения из удаленного источника (например, CMS, API и т. д.) и сохранять их в JSON-файлах.
- если вы используете библиотеку i18n, которая требует определенного расположения для загрузки ваших JSON (например,
Внутри этот плагин будет сканировать всю кодовую базу (codebase), искать определенные JSON-файлы и загружать их в словари Intlayer. Обратите внимание, что этот плагин не будет записывать результат и переводы обратно в JSON-файлы.
- Этот плагин используется для загрузки JSON-файлов из источника и их загрузки в словари Intlayer. Он может сканировать всю codebase и искать определенные JSON-файлы.
Этот плагин можно использовать
syncJSON: Синхронизация JSON-файлов со словарями Intlayer.- Этот плагин используется для синхронизации JSON-файлов со словарями Intlayer. Он может сканировать указанное местоположение и загружать JSON, соответствующие шаблону для определенных JSON-файлов. Этот плагин полезен, если вы хотите получить преимущества Intlayer, используя при этом другую библиотеку i18n.
Использование обоих плагинов
Копировать код в буфер обмена
syncJSON plugin
Быстрый старт
Добавьте плагин в ваш intlayer.config.ts и укажите ему на вашу существующую структуру JSON.
Копировать код в буфер обмена
Альтернатива: один файл на локаль (часто используется в настройках i18next/react-intl):
Копировать код в буфер обмена
Как это работает
- Чтение: плагин обнаруживает JSON-файлы из вашего
sourceбилдера и загружает их как словари Intlayer. - Запись: после сборки и заполнения он записывает локализованный JSON обратно по тем же путям (с конечной новой строкой, чтобы избежать проблем с форматированием).
- Автозаполнение: плагин объявляет путь
autoFillдля каждого словаря. Запускintlayer fillпо умолчанию обновляет только отсутствующие переводы в ваших JSON-файлах.
API:
Копировать код в буфер обмена
format ('intlayer' | 'icu' | 'i18next')
Указывает форматтер, который будет использоваться для содержимого словаря при синхронизации JSON-файлов. Это позволяет использовать различные синтаксисы форматирования сообщений, совместимые с рантаймом intlayer.
undefined: Форматтер не будет использоваться, содержимое JSON будет использоваться как есть.'intlayer': Форматтер Intlayer по умолчанию (default).'icu': Использует форматирование сообщений ICU (совместимо с такими библиотеками, как react-intl, vue-i18n).'i18next': Использует форматирование сообщений i18next (совместимо с i18next, next-i18next, Solid-i18next).
Обратите внимание, что использование форматтера преобразует содержимое вашего JSON на входе и выходе. Для сложных правил JSON, таких как множественное число ICU, парсинг может не гарантировать отображение один к одному между входом и выходом. Если вы не используете рантайм Intlayer, вы можете предпочесть не устанавливать форматтер.
Пример:
Копировать код в буфер обмена
splitKeys (boolean)
Определяет, должен ли один JSON-файл, ключи первого уровня которого являются пространствами имен, становиться одним словарем на каждый ключ верхнего уровня, вместо одного словаря, содержащего весь файл.
Это соответствует модели пространств имен таких библиотек, как next-intl и react-intl, где один файл messages/{locale}.json группирует несколько пространств имен по своим ключам первого уровня, каждое из которых адресуется независимо (например, useTranslations('Hero') разрешается в словарь Hero).
undefined(по умолчанию): автоматическое определение — файл разделяется, когда шаблонsourceне содержит сегмента{key}(один файл содержит все пространства имен), и сохраняется как один словарь в противном случае (один файл на ключ).true: всегда разделять каждый ключ верхнего уровня на свой собственный словарь.false: никогда не разделять; весь файл становится одним словарем.
Пример одного файла messages/{locale}.json:
Копировать код в буфер обмена
Копировать код в буфер обмена
Это создает три словаря — Hero, Nav и About — так что useTranslations('Hero') (next-intl) разрешается правильно. При обратной записи все пространства имен снова собираются в тот же файл для каждой локали.
Когда вы сохраняете явный сегмент{key}в вашемsource(например,./locales/${locale}/${key}.json), каждый файл уже является одним пространством имен, поэтому разделение по умолчанию отключено.
Несколько источников JSON и приоритет
Вы можете добавить несколько плагинов syncJSON для синхронизации различных источников JSON. Это полезно, когда у вас есть несколько библиотек i18n или различные структуры JSON в вашем проекте.
Система приоритетов
Когда несколько плагинов нацелены на один и тот же ключ словаря, параметр priority определяет, какой плагин имеет приоритет:
- Более высокие номера приоритета преобладают над более низкими
- Приоритет по умолчанию для файлов
.contentравен0 - Приоритет по умолчанию для плагинов равен
0 - Плагины с одинаковым приоритетом обрабатываются в порядке их появления в конфигурации
Копировать код в буфер обмена
Load JSON plugin
Быстрый старт
Добавьте плагин в ваш intlayer.config.ts, чтобы импортировать существующие JSON-файлы как словари Intlayer. Этот плагин предназначен только для чтения (без записи на диск):
Копировать код в буфер обмена
Альтернатива: макет для каждой локали, только для чтения (загружается только выбранная локаль):
Копировать код в буфер обмена
Как это работает
- Обнаружение: создает glob из вашего
sourceбилдера и собирает соответствующие JSON-файлы. - Импорт: загружает каждый JSON-файл как словарь Intlayer с предоставленной
locale. - Только для чтения: не записывает и не форматирует выходные файлы; используйте
syncJSON, если вам нужна двусторонняя синхронизация. - Готовность к автозаполнению: определяет шаблон
fill, чтобыintlayer content fillмог заполнять отсутствующие ключи.
API
Копировать код в буфер обмена
format ('intlayer' | 'icu' | 'i18next')
Указывает форматтер, который будет использоваться для содержимого словаря при загрузке JSON-файлов. Это позволяет использовать различные синтаксисы форматирования сообщений, совместимые с различными библиотеками i18n.
'intlayer': Форматтер Intlayer по умолчанию (default).'icu': Использует форматирование сообщений ICU (совместимо с такими библиотеками, как react-intl, vue-i18n).'i18next': Использует форматирование сообщений i18next (совместимо с i18next, next-i18next, Solid-i18next).
Пример:
Копировать код в буфер обмена
splitKeys (boolean)
Поведение такое же, как в syncJSON: когда один JSON-файл группирует несколько пространств имен по своим ключам первого уровня, каждый ключ верхнего уровня становится своим собственным словарем.
undefined(по умолчанию): автоматическое определение — разделение происходит, когда шаблонsourceне содержит сегмента{key}, в противном случае — один словарь.true/false: принудительное включение или отключение разделения.
Копировать код в буфер обмена
Поведение и соглашения
- Если ваша маска
sourceвключает плейсхолдер локали, будут импортированы только файлы для выбраннойlocale. - Если в вашей маске нет сегмента
{key}, каждый ключ верхнего уровня файла становится отдельным словарем по умолчанию (см. splitKeys). УстановитеsplitKeys: false, чтобы вместо этого загрузить весь файл как единый словарьindex. - Ключи выводятся из путей к файлам путем подстановки плейсхолдера
{key}в вашемsourceбилдере. - Плагин использует только обнаруженные файлы и не создает отсутствующие локали или ключи.
- Путь
fillвыводится из вашегоsourceи используется для обновления отсутствующих значений через CLI, когда вы соглашаетесь.
Разрешение конфликтов
Когда один и тот же ключ перевода существует в нескольких источниках JSON:
- Плагин с наивысшим приоритетом определяет окончательное значение
- Источники с более низким приоритетом используются в качестве запасных для отсутствующих ключей
- Это позволяет вам поддерживать устаревшие переводы, постепенно переходя к новым структурам
CLI
Синхронизированные JSON-файлы будут рассматриваться как другие файлы .content. Это означает, что все команды intlayer будут доступны для синхронизированных JSON-файлов. Включая:
intlayer content testдля проверки наличия отсутствующих переводовintlayer content listдля вывода списка синхронизированных JSON-файловintlayer content fillдля заполнения отсутствующих переводовintlayer content pushдля отправки синхронизированных JSON-файловintlayer content pullдля получения синхронизированных JSON-файлов
Подробнее см. в Intlayer CLI.
Ограничения (текущие)
- Нет поддержки вставок или множественного числа/ICU при работе со сторонними библиотеками.
- Визуальный редактор пока недоступен для рантаймов, отличных от Intlayer.
- Только синхронизация JSON; форматы каталогов, отличные от JSON, не поддерживаются.
Почему это важно
- Мы можем рекомендовать проверенные решения i18n и позиционировать Intlayer как дополнение.
- Мы используем их SEO/ключевые слова с руководствами, которые заканчиваются предложением Intlayer для управления JSON.
- Расширяет целевую аудиторию от «новых проектов» до «любой команды, уже использующей i18n».
