Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Новый Intlayer v9 — Что нового?
Добро пожаловать в Intlayer v9! Этот мажорный релиз знаменует собой важную веху в упрощении миграции на Intlayer благодаря пакетам адаптеров совместимости (Compat Adapter Packages) для популярных библиотек i18n (react-i18next, next-intl, vue-i18n и др.), а также добавляет поддержку сложных структур контента: Collections (Коллекции), Variants (Варианты) и Dynamic Records (Динамические записи).
Содержание
Пакеты адаптеров совместимости (Compat Adapter Packages)
Миграция на Intlayer с популярных библиотек i18n стала проще, чем когда-либо. Мы создали пять пакетов совместимости (compat packages), которые предоставляют точно такой же публичный API, как и стандартные библиотеки i18n, но делегируют всю работу по переводу в Intlayer во время выполнения (runtime).
Тот же публичный API со строгой типизацией
Просто заменив импорты, вы получаете все преимущества Intlayer (включая безопасность типов на этапе компиляции на основе ваших реальных словарей) с минимальными изменениями в коде:
@intlayer/i18next@intlayer/react-i18next@intlayer/next-intl@intlayer/next-i18next@intlayer/vue-i18n
Например, просто замените:
Копировать код в буфер обмена
на:
Копировать код в буфер обмена
Теперь ваши ключи будут строго типизированы на основе словарей Intlayer, обеспечивая автодополнение путей через точку (dot-path) в вашей IDE!
Плагины-алиасы для сборщиков (Vite, Next.js, Turbopack)
Чтобы позволить мигрировать без ручной перезаписи всех импортов, каждый пакет адаптера совместимости включает в себя кастомный плагин для сборщика (Vite или Next.js) по подпути /plugin.
Эти плагины автоматически перезаписывают существующие импорты (например, react-i18next или next-intl) на их эквиваленты @intlayer/* во время сборки.
Пример для Next.js (Webpack / Turbopack)
Вместо withIntlayer оберните вашу конфигурацию Next.js плагином совместимости:
Копировать код в буфер обмена
Пример для Vite (React, Vue, Solid, Svelte)
Копировать код в буфер обмена
Единый резолвер рантайма (Mutualized Runtime Resolver)
Все адаптеры совместимости теперь направляют разрешение переводов через единый, высокооптимизированный парсер рантайма: @intlayer/core/messageFormat.
- Интерполяция сообщений (Interpolate Message): Разрешает стандартные шаблоны
{{var}}(с пробелами и путями через точку), аргументы в формате ICU ({v, number, percent}и т. д.) и простые шаблоны{var}. - Резолвер узлов сообщений (Message Node Resolver): Разрешает вложенные узлы:
insert(),plural()(плюрализация по правилам CLDR),enu()(перечисление),gender()(род), HTML-теги, массивы и вызываемые функции-узлы. - Токенизированный парсер тегов (Tokenized Tag Parser): Поддерживает встроенные XML/HTML-теги и нумерованные теги (например,
<1>children</1>) для рендеринга форматированного текста (rich-text) из коробки.
Спецификация функций: Collections, Variants и Dynamic Records
Intlayer v9 выходит за рамки статических объектов типа ключ-значение, позволяя словарям объявлять динамические структуры макетов со сквозной типизацией.
1. Коллекции (Collections)
Определяйте управляемый CMS упорядоченный список элементов (например, FAQ, товары или списки блогов):
Копировать код в буфер обмена
Использование:
Копировать код в буфер обмена
2. Варианты (Variants)
Используйте для A/B-тестирования, сезонных заголовков, фича-флагов или кастомных целевых страниц:
Копировать код в буфер обмена
Использование:
Копировать код в буфер обмена
3. Динамические записи (Dynamic Records)
Определяйте словари, записи которых загружаются динамически во время выполнения по идентификаторам запросов:
Копировать код в буфер обмена
Использование:
Копировать код в буфер обмена
Динамическая загрузка и оптимизация размера бандла
Чтобы сохранять размер бандлов минимальным, Intlayer v9 поддерживает динамическую ленивую загрузку (lazy loading).
В вашей конфигурации установите importMode в значение 'dynamic' или 'fetch':
Копировать код в буфер обмена
Во время сборки @intlayer/swc и @intlayer/babel сканируют ваши файлы и заменяют вызовы useIntlayer / getIntlayer на tree-shakeable обертки (useDictionary / useDictionaryDynamic). Загружается только контент, необходимый для выбранного элемента коллекции, варианта или локали, что предотвращает попадание неиспользуемых переводов в ваш продакшн-бандл.
Примечания по миграции с v8
Если вы обновляетесь с v8, обратите внимание, что v9 не содержит ломающих изменений (breaking changes). Однако вот ключевые изменения:
- Локали и диалекты (Locales & Dialects): Если вы используете внешние зависимости i18n, добавьте соответствующие плагины адаптеров совместимости в вашу конфигурацию или настройки сборщика для автоматической перезаписи импортов.
- Кастомные селекторы (Custom Selectors): При вызове
useIntlayerвторой параметр теперь зарезервирован для объекта опций, содержащего{ locale, item, variant, id }. Если ранее вы передавали строку локали напрямую, вы все еще можете это делать, но для расширенного выбора рекомендуется использовать объект опций.