Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Новый Intlayer v8. Что нового?
Добро пожаловать в Intlayer v8! В этом релизе сделан акцент на улучшении опыта разработчика с автоматическим обнаружением контента, обеспечении целостности данных с помощью валидации схем и предоставлении большего контроля над управлением словарями.
Table of contents
Эволюция насыщенного контента: Markdown и HTML
Intlayer v8 вносит значительные улучшения в способы обработки насыщенного контента, представляя HTML-узлы (которых не было в v7) и унифицируя API с Markdown-узлами (которые были в v7, но были улучшены).
Унифицированный API .use()
Мы ввели метод .use() как для Markdown, так и для HTML-узлов. Этот метод позволяет настраивать HTML-теги или компоненты, используемые при рендеринге.
- Замена компонентов: Вы можете легко заменить HTML-теги или пользовательские компоненты компонентами вашего фреймворка (например, заменить
<a>наNextLinkили<CustomCmp>на React-компонент). - Типизация: Все функции для предоставления компонентов полностью типизированы, что гарантирует получение правильных пропсов.
Поведение рендеринга по умолчанию
В v7, если провайдер не был определен, узлы Markdown рендерились как необработанные строки, что часто требовало использования внешних библиотек для их парсинга.
В v8 Intlayer включает собственный внутренний парсер Markdown. По умолчанию узлы Markdown теперь рендерится напрямую в HTML без необходимости использования каких-либо внешних библиотек.
Новые утилиты Renderer и Provider
Мы представили новые автономные функции рендеринга и компоненты, чтобы дать вам больше контроля вне стандартного потока useIntlayer.
- Markdown:
MarkdownRenderer,useMarkdownRenderer,renderMarkdown. (Примечание:MarkdownProviderсуществовал в v7, но теперь интегрируется с этими новыми инструментами). - HTML:
HTMLRenderer,useHTMLRenderer,renderHTML,HTMLProvider.
Примеры: Инструменты рендеринга Markdown
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Использование сервиса:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
Примеры: Инструменты рендеринга HTML
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Прямое использование:
В Angular вы можете использовать стандартную привязку [innerHTML].
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
1. Использование компонента:
Копировать код в буфер обмена
2. Использование хука:
Копировать код в буфер обмена
3. Использование утилитарной функции:
Копировать код в буфер обмена
Для получения более подробной информации см. Документацию по HTML-контенту и Документацию по Markdown.
Файлы контента YAML и Markdown (v8.10.0)
Теперь вы можете объявлять контент напрямую, используя расширения файлов .content.md и .content.yaml. Это идеально подходит для длинного контента, блогов, документации и политик конфиденциальности.
Эти файлы полностью редактируются в Visual Editor, обеспечивая оптимизированный рабочий процесс для нетехнических членов команды.
Для получения более подробной информации см. Документацию по файлам контента YAML и Документацию по файлам контента Markdown.
Пользовательские правила перезаписи URL
Intlayer v8 добавляет поддержку пользовательских правил перезаписи URL, позволяя задавать локализованные пути, отличающиеся от стандартной структуры /locale/path. Эта мощная функция помогает улучшить локальную SEO и обеспечить более естественный пользовательский опыт для неанглоязычных пользователей.
Основные улучшения в v8:
- Форматтеры для фреймворков: новые
nextjsRewrite,svelteKitRewrite,reactRouterRewrite,vueRouterRewrite,solidRouterRewrite,tanstackRouterRewrite,nuxtRewriteиviteRewrite, обеспечивающие идиоматичный синтаксис паттернов для каждого роутера. useRewriteURLHook: Новый Hook на стороне клиента, который тихо исправляет адресную строку на «красивый» локализованный URL без инициирования переходов маршрутизатора.- Automatic SEO Redirects: Встроенные прокси теперь автоматически перенаправляют пользователей с вручную введённых канонических путей (например,
/fr/about) на их более «красивые» локализованные версии (например,/fr/a-propos).
Пример конфигурации:
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Эта функция поддерживается из коробки в Next.js и Vite через прокси Intlayer и может быть легко интегрирована с другими роутерами, такими как TanStack Router, React Router, Vue Router, SvelteKit и Solid Router.
Для получения дополнительной информации и руководств по интеграции смотрите Документацию по пользовательским правилам переписывания URL.
Расширенные значения вставок
В v8 значения вставок теперь могут принимать React-элементы (или Vue-узлы) в дополнение к строкам и числам. Это позволяет внедрять богатые интерактивные компоненты непосредственно в ваши шаблоны вставок.
Intlayer теперь надёжно обрабатывает вложенные узлы React и Preact внутри вставок, гарантируя сохранение и корректный рендеринг сложных UI-структур.
Пример:
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Unicode CLDR Plural Rules (v8.8.0)
Был добавлен новый хелпер узла plural, основанный на правилах множественного числа, определенных проектом Unicode CLDR, что улучшает поддержку сложных языков.
Копировать код в буфер обмена
Затем вы можете динамически передавать количество в компонент вашего фреймворка:
Копировать код в буфер обмена
Для получения дополнительной информации см. Документацию по плюрализации.
Валидация схемы содержимого
В Intlayer v8 добавлена валидация схем для словарей. Теперь вы можете определить переиспользуемые схемы валидации в вашей конфигурации с помощью Zod и применять их к файлам контента. Это гарантирует, что ваш контент всегда соответствует ожидаемой структуре и позволяет обнаруживать ошибки на этапе сборки.
1. Определите схемы
Определите свои схемы в intlayer.config.ts:
Копировать код в буфер обмена
2. Примените схемы к словарям
Укажите ключ схемы в определении словаря:
Копировать код в буфер обмена
Если содержимое не соответствует схеме (например, заголовок слишком короткий), процесс сборки выдаст ошибку.
TypeScript: Примитивные аксессоры IntlayerNode
Тип IntlayerNode был обновлен, чтобы позволить вызывать примитивные методы JavaScript напрямую на узлах контента. Это делает возможным взаимодействие с вашим локализованным контентом напрямую, как если бы он был стандартным примитивом строки, числа, булева значения или массива.
Поддерживается в React, Preact, Solid, Svelte, Vue и Angular.
Пример со строкой
Копировать код в буфер обмена
Пример с массивом
Копировать код в буфер обмена
Улучшенное автоматическое определение содержимого
В v8 Intlayer автоматически определяет синтаксис Markdown, HTML-теги и вставки переменных в строках содержимого. Это означает, что вы часто можете опускать вспомогательные функции, такие как md(), html() или insert().
Это поведение включено по умолчанию. Теперь вы можете тонко настраивать это обнаружение либо глобально в вашем intlayer.config.ts, либо для конкретного словаря.
Тонкая настройка
Вы можете включать или отключать определенные типы преобразований:
Копировать код в буфер обмена
Поведение v7 (Ручная обёртка):
Копировать код в буфер обмена
Поведение v8 (Автоматическое определение):
Копировать код в буфер обмена
Подлежащий JSON-результат остается прежним, сохраняя богатую информацию о типах, необходимую для рендеринга:
Копировать код в буфер обмена
Локализация: новый хук useIntl
В React, Next.js и Vue теперь доступен новый хук useIntl(). Он предоставляет объект Intl, привязанный к локали, который автоматически использует текущий язык для форматирования чисел, дат и прочего, без необходимости вручную передавать локаль.
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Копировать код в буфер обмена
Инструменты: улучшения расширения VSCode
Расширение Intlayer для VSCode получает крупные обновления в версии v8 для упрощения рабочего процесса интернационализации:
- Время запуска: Повышение производительности при открытии проекта.
- Кэширование: Улучшенный слой кэширования для почти мгновенной валидации и автодополнения.
- Обнаружение неиспользуемых и дублированных ключей: Новые функции для автоматического обнаружения неиспользуемых ключей и дублированных ключей в ваших словарях, что помогает поддерживать контент чистым и эффективным.
Инструменты: C++ Watcher и LSP на базе OXC (v8.12.0)
Intlayer v8.12.0 приносит важные улучшения в опыт разработчика:
- Parcel Watcher: Наблюдатель за контентом был перенесен с
chokidarна@parcel/watcher, используя нативное отслеживание файлов на C++ для обеспечения более быстрых обновлений и значительно меньшего потребления памяти. - Новый Language Server Protocol (LSP): Теперь доступен совершенно новый LSP. Созданный на основе парсинга OXC, он помогает вашей IDE и AI-агентам беспрепятственно связывать вызовы
useIntlayer('my-key')с соответствующими файлами.contentи наоборот.
Для получения более подробной информации см. Документацию по LSP.
Оптимизации компилятора
Intlayer v8 включает новый уровень кеширования для компилятора Markdown и HTML. Это гарантирует, что идентичные строки контента с одинаковой конфигурацией парсятся только один раз, что значительно снижает накладные расходы при повторных рендерах или при использовании одного и того же контента в нескольких местах.
Копировать код в буфер обмена
Копировать код в буфер обмена
Для Vue / Svelte необходимо установить соответствующий пакет компилятора:
bashКопировать кодКопировать код в буфер обмена
bashКопировать кодКопировать код в буфер обмена
Экспериментальные оптимизации сборки: Minify и Purge (v8.7.0)
Intlayer v8.7.0 представляет новые экспериментальные функции сборки в вашем intlayer.config.ts, разработанные для оптимизации вашего продакшн-бандла:
- Минификация словарей: Минифицирует файлы словарей для уменьшения их размера.
- Очистка неиспользуемых ключей (Purging): Сканирует и удаляет неиспользуемые ключи перевода из словарей, переименовывая активные ключи в короткие символы (например,
"products" -> "a","pricing" -> "b"). Это уменьшает размер бандла до 5%. - Отключение проверок TypeScript: Ускоряет сборку за счет отключения проверки типов TypeScript на этапе компиляции.
Копировать код в буфер обмена
Гибкость: Унифицированный режим импорта
Булево свойство live устарело в пользу более универсального свойства importMode. Это позволяет явно задавать, как словари должны загружаться: статически, динамически или посредством синхронизации в реальном времени.
Режимы
static(по умолчанию): словарь включается в сборку на этапе сборки. Лучший вариант для производительности.dynamic: словарь загружается во время выполнения (например, через JSON-запрос или с использованием suspense).fetch: словарь запрашивается с CMS/сервера во время выполнения и синхронизируется.
Миграция:
Открыть таблицу в модальном окне для четкого просмотра всех данных
| v7 Конфигурация | v8 Конфигурация |
|---|---|
live: true | importMode: 'fetch' |
live: false | importMode: 'static' (или 'dynamic') |
Примечание: В Intlayer v8 свойство importMode было перемещено из конфигурации build в конфигурацию dictionary в intlayer.config.ts. Это позволяет определить режим импорта по умолчанию для всех словарей, при этом сохраняя возможность переопределять его для каждого словаря отдельно.
Пример глобальной конфигурации:
Копировать код в буфер обмена
Пример словаря:
Копировать код в буфер обмена
Управление местоположением словаря
В v8 введено свойство location, которое позволяет явно управлять тем, где находятся словари и как они синхронизируются. Это особенно полезно для гибридных рабочих процессов, включающих как локальные файлы, так и контент удаленной CMS.
Варианты
local: Словарь существует только локально. Он не будет отправлен в удаленную CMS.remote: Словарь управляется удаленно. После отправки в CMS он будет отделён от локальной копии. Удалённый словарь будет подтягиваться из CMS.local_and_remote: Словарь существует в обоих местах. Локальные изменения отправляются, а удалённые, подтягиваются (синхронизируются).
Пример:
Копировать код в буфер обмена
Разделение системной конфигурации
Intlayer v8 разделяет конфигурацию источников контента и внутренние системные и выходные пути. Это разгружает свойство content и ясно показывает, какие настройки предназначены для управления пользователем, а какие управляются системой Intlayer.
Следующие свойства были перемещены из content в новое свойство system в intlayer.config.ts:
dictionariesDirmoduleAugmentationDirunmergedDictionariesDirtypesDirmainDirconfigDircacheDiroutputFilesPatternWithPath
Поведение v7:
Копировать код в буфер обмена
Поведение v8:
Копировать код в буфер обмена
Разделение директорий контента и кода
Intlayer v8 разделяет конфигурацию файлов определения контента и конфигурацию трансформации кода. Это позволяет более точно настраивать отслеживание и сканирование, повышая производительность сборки.
Ранее contentDir использовался и для отслеживания файлов .content.*, и для сканирования кода на наличие вызовов useIntlayer. Теперь:
contentDir: предназначен исключительно для файлов объявлений контента.codeDir: предназначен исключительно для кода вашего приложения, который требует трансформации (например, pruning, удаление неиспользуемого кода, оптимизация).
Миграция:
Если ранее вы устанавливали contentDir, Intlayer v8 будет использовать его также в качестве значения по умолчанию для codeDir, но при этом выдаст предупреждение. Вам следует явно указать codeDir в конфигурации.
Поведение в v7:
Копировать код в буфер обмена
Поведение в v8:
Копировать код в буфер обмена
Фреймворк: улучшения для Svelte
Markdown и HTML-контент в Svelte теперь автоматически парсятся в HTML при преобразовании в строку. Это значительно упрощает использование синтаксиса Svelte {@html}, поскольку теперь вы можете просто передавать узел контента напрямую.
Поддержка Angular: Сборщик Vite (v8.11.0)
Для пользователей Angular Intlayer теперь нативно поддерживает сборщик Vite через новый кастомный плагин esbuild, ускоряя время разработки и сборки.
Подробности о конфигурации см. в Документации по окружению Angular.
Генерация карты сайта (Sitemap) (v8.6.0)
Intlayer теперь автоматически генерирует карты сайта на основе ваших локалей и режима маршрутизации. Это особенно полезно для SEO-оптимизации в архитектурах роутеров, таких как TanStack Router:
Копировать код в буфер обмена
Примечания по миграции из v7
Изменения в конфигурации
liveproperty: Свойствоliveв словарях удалено. ИспользуйтеimportMode: 'fetch'вместо него.- importMode: Свойство
build.importModeв конфигурации устарело. Используйтеdictionary.importModeвместо него. contentDirиcodeDir:contentDirтеперь специально для файлов контента. Добавлено новое свойствоcodeDirдля трансформации кода. ЕслиcodeDirне установлен, Intlayer будет использоватьcontentDirи выведет предупреждение.- Валидация схемы: Для использования новой функции
schemaубедитесь, что в вашем проекте установленzod.
