Автор:
    Создание:2025-09-22Последнее обновление:2025-09-22

    Новый Intlayer v6 - Что нового?

    Добро пожаловать в Intlayer v6! Этот релиз сосредоточен на производительности, опыте разработчика и надежности. Ниже приведены основные моменты, а также заметки по миграции и примеры для копирования.

    Содержание

    Основные моменты

    • Новая команда: npx intlayer content test для обнаружения отсутствующих переводов
    • Новая глобальная опция autoFill для автоматической генерации отсутствующих переводов
    • Команда fill по умолчанию пропускает существующие переводы: npx intlayer fill
    • Расширение VS Code: новая панель активности Intlayer (Поиск и Словари), действия на панели инструментов/контекстные действия, автоматическое раскрытие, команды Fill/Test
    • Сборки стали в 10 раз быстрее благодаря параллелизации промисов
    • Кэширование удалённых словарей для избежания повторного запроса при запуске приложения
    • Улучшенное логирование: установите log.mode: 'verbose' для детального анализа поведения
    • Усиленная валидация для предотвращения сбоев приложения из-за проблем со словарём
    • Живые обновления с CMS с использованием build.importMode = 'live' и pnpm intlayer live
    • Исправления: интеграция с Vue.js, адаптер Lynx, Визуальный редактор на Windows

    Новое: Тестирование отсутствующих переводов

    Быстро проверьте ваш проект, чтобы найти отсутствующие ключи/локали.

    bash
    npx intlayer content test
    

    Output:

    bash
    pnpm intlayer content test
    Отсутствующие переводы:
     - blog-data       - Японский (ja), Корейский (ko), Китайский (zh), Немецкий (de), Итальянский (it) - src/components/BlogPage/blogData.content.ts
     - demo-page       - Французский (fr), Итальянский (it)                                         - src/components/DemoPage/demo.content.ts
     - locale-switcher - Итальянский (it), Португальский (pt)                                       - src/components/LocaleSwitcher/localeSwitcher.content.ts
    Локали: Английский (en), Русский (ru), Японский (ja), Французский (fr), Корейский (ko), Китайский (zh), Испанский (es), Немецкий (de), Арабский (ar), Итальянский (it), Британский английский (en-GB), Португальский (pt), Хинди (hi)
    Обязательные локали: Английский (en)
    Отсутствующие локали: Японский (ja), Корейский (ko), Китайский (zh), Немецкий (de), Итальянский (it), Французский (fr), Португальский (pt)
    Отсутствующие обязательные локали: -
    Всего отсутствующих локалей: 7
    Всего отсутствующих обязательных локалей: 0
    

    См. больше опций в документации CLI: Справочник CLI → "Проверка отсутствующих переводов". А также руководство Тестирование.


    Новинка: Глобальный autoFill для автоматического заполнения отсутствующих переводов

    Теперь вы можете включить авто-заполнение глобально, чтобы любой словарь с отсутствующими переводами автоматически дополнялся.

    intlayer.config.ts
    import { type IntlayerConfig, Locales } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
        defaultLocale: Locales.ENGLISH,
        requiredLocales: [Locales.ENGLISH, Locales.FRENCH],
      },
      content: {
        // Автоматически генерировать отсутствующие переводы для всех словарей
        autoFill: "./{{fileName}}.content.ts",
        //
        // autoFill: "/messages/{{locale}}/{{key}}/{{fileName}}.content.json",
        //
        // autoFill: true, // автоматически генерировать отсутствующие переводы для всех словарей, используя "./{{fileName}}.content.json"
        //
        // autoFill: {
        //   en: "./{{fileName}}.en.content.json",
        //   fr: "./{{fileName}}.fr.content.json",
        //   es: "./{{fileName}}.es.content.json",
        // },
      },
    };
    
    export default config;
    

    Автоматически заполните ваши отсутствующие переводы, используя команду npx intlayer fill.

    Вы все еще можете тонко настраивать каждый словарь, используя поле autoFill в файлах контента. Полную справку смотрите в doc/autoFill и doc/dictionary/content_file.


    Команда fill: более безопасные настройки по умолчанию

    Команда fill теперь по умолчанию заполняет только отсутствующие переводы и пропускает уже существующий контент.

    bash
    npx intlayer fill
    
    bash
    Затронутые ключи словарей для обработки: access-key-creation-form-schema, doc-search-metadata, doc-search-page
      - [access-key-creation-form-schema]      У словаря нет пути к файлу. Пропуск.
      - [access-key-creation-form-schema]      Обработка декларации контента: src/components/Dashboard/ProjectForm/AccessKey/useAccessKeyCreationFormSchema.content.ts
      - [access-key-creation-form-schema]      Нет локалей для заполнения - пропуск словаря
      - [doc-search-metadata]                  Словарь не имеет пути к файлу. Пропуск.
      - [doc-search-metadata]                  Обработка объявления контента: src/app/[locale]/(docs)/doc/search/metadata.content.ts
      - [doc-search-metadata]                  Нет локалей для заполнения - пропуск словаря
      - [doc-search-page]                      Словарь не имеет пути к файлу. Пропуск.
      - [doc-search-page]                      Обработка объявления контента: src/app/[locale]/(docs)/doc/search/page.content.ts
      - [doc-search-page]                     [Русский (ru)]                   Подготовка перевода словаря с английского (en) на русский (ru)
    [intlayer]  Применено форматирование Prettier к src/app/[locale]/(docs)/doc/search/page.content.ts
      - [doc-search-page]                      Объявление контента записано в src/app/[locale]/(docs)/doc/search/page.content.ts
    

    Примеры CI доступны в разделе CI/CD.


    Обновленное расширение VS Code

    Теперь расширение включает выделенную вкладку Intlayer в панели активности и несколько улучшений рабочего процесса:

    • Панель активности Intlayer с двумя представлениями:
      • Веб-просмотр поиска (intlayer.searchBar) для живого поиска по словарю/контенту
      • Дерево словарей (intlayer.dictionaries), отображающее окружения, словари и участвующие файлы
    • Панель инструментов в представлении словарей: Build, Pull, Push, Fill, Refresh, Test, Create Dictionary File
    • Контекстные меню: Pull/Push для словарей; Fill для файлов

    Подробности смотрите в документации Официальное расширение VS Code.


    Обновлен MCP server для поддержки новых функций.

    • Автозаполнение
    • Тестирование отсутствующих переводов
    • Живые обновления
    • Логирование
    • Валидация
    • Примечания миграции
    • Документация
    MCP server помогает автоматизировать проекты, использующие Intlayer. Тестирование недостающих переводов для автогенерируемого кода. Помогает понять вашу конфигурацию и встроить документацию Intlayer в вашу IDE.

    Производительность: в 10 раз быстрее

    • Параллельное разрешение локальных и удалённых словарей
    • Удалённые словари кэшируются, чтобы избежать повторного запроса при запуске приложения
    bash
    npx intlayer build
    

    Вывод:

    bash
    [intlayer]  Подготовка Intlayer (v6.0.1)
    [intlayer]  Словари:
    [intlayer]  ✓ Локальный контент: 163/163
    [intlayer]  ✓ Удалённый контент: 100/100
    [intlayer]   - access-key-creation-form             [local: ✔ построен] [distant: ✔ импортирован]
    [intlayer]   - access-key-creation-form-schema      [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - access-key-form                      [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - ai-ab-testing-section                                 [distant: ✔ импортировано]
    [intlayer]   - application-not-running-view         [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - application-template-message         [local: ✔ построено] [distant: ✔ получено]
    [intlayer]   - aside-navigation                     [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - ask-reset-password                   [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - ask-reset-password-schema            [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - autocompletion-section               [local: ✔ построено] [distant: ✔ получено]
    [intlayer]   - available-techno-section             [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - blog-data                            [local: ✔ построено]
    [intlayer]   - blog-metadata                        [local: ✔ построено]
    [intlayer]   - blog-nav-list                        [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - blog-page                                             [distant: ✔ получено]
    [intlayer]   - blog-search-metadata                 [local: ✔ построено] [distant: ✔ импортировано]
    [intlayer]   - blog-search-page                     [local: ✔ построено] [distant: ✔ импортировано]
    ...
    [intlayer]  Контент загружен  (Всего: 8401мс - Локально: 4050мс - Удаленно: 4222мс)
    

    Улучшения логирования

    Система логирования была улучшена для предоставления более подробной информации о том, что происходит во время сборки (build time) и выполнения трансформаций.

    Включите подробные логи, чтобы лучше понимать, что происходит во время сборки (build time) и выполнения трансформаций.
    intlayer.config.ts
    export default {
      log: {
        mode: "verbose", // опции: "default" | "verbose" | "disabled"
      },
    };
    

    Смотрите Конфигурация для всех опций логирования.


    Усиленная валидация

    Обработка словарей теперь выполняет более надежную валидацию. Когда словарь не удается обработать, Intlayer предотвращает сбой вашего приложения и выводит понятные ошибки.


    Живые обновления с CMS (безопасно для продакшена)

    Обеспечьте обновление контента в реальном времени (например, редакционные обновления) в продакшене без необходимости пересобирать приложение.

    1. Включите режим живого импорта:
    intlayer.config.ts
    import { type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      build: {
        importMode: "live", // "static" | "dynamic" | "live"
      },
      editor: {
        liveSync: true, // включить живую синхронизацию на стороне сервера
      },
    };
    
    export default config;
    
    1. Запустите приложение и процесс живого обновления параллельно:
    bash
    npx intlayer live --with 'vite preview'
    

    Примечания:

    • Только словари, помеченные для использования живого режима, будут загружаться в реальном времени. Остальные оптимизированы для производительности.
    • При недоступности живого API происходит возврат к динамическому импорту.

    См. CMS и Live Sync и Конфигурация для полного руководства.

    Параллельный процесс для отслеживания файлов на turbopack

    При использовании Turbopack на Next.js 14 и выше в качестве сервера разработки с командой next dev --turbopack изменения словарей не будут автоматически обнаруживаться по умолчанию.

    Это ограничение возникает потому, что Turbopack не может запускать webpack plugins параллельно для отслеживания изменений в ваших файлах контента.

    Чтобы обойти это, мы использовали команду intlayer watch с опцией --with для одновременного запуска сервера разработки и наблюдателя сборки Intlayer.

    package.json
    {
      "scripts": {
        "dev": "npx intlayer watch --with 'next dev --turbopack'",
      },
    }
    

    Заметки по миграции

    • Удалено: dictionaryOutput (ранее i18next или next-intl). Это вернется в виде подключаемых адаптеров в будущих версиях. Удалите это поле из вашей конфигурации.
    • Связанное удаление: i18nextResourcesDir (см. журнал изменений doc/configuration).
    • Предпочитайте новую глобальную опцию content.autoFill для массовой генерации отсутствующих переводов.
    • Используйте npx intlayer content test для проверки PR на наличие отсутствующих переводов.
    • Для подробной диагностики установите log.mode = 'verbose'.

    Исправления

    • Стабильность интеграции с Vue.js
    • Улучшения адаптера Lynx
    • Визуальный редактор в Windows

    Примечания миграции с v6 на v7

    Дополнительную информацию см. в примечаниях миграции с v6 на v7.


    Полезные ссылки