Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
Новый Intlayer v7 - Что нового?
Добро пожаловать в Intlayer v7! Этот крупный релиз представляет значительные улучшения в производительности, безопасности типов и опыте разработчика. Ниже приведены основные моменты, а также заметки по миграции и практические примеры.
Оглавление
Основные моменты
- Стратегия кэширования для ускорения сборок
- Улучшенная генерация типов TypeScript с типами, специфичными для локали
- Оптимизация бандла: локали как строки вместо enum
- Новые режимы маршрутизации:
prefix-no-default,prefix-all,no-prefix,search-params - Хранение локали в соответствии с GDPR с использованием localStorage по умолчанию
- Гибкая конфигурация хранения: cookies, localStorage, sessionStorage или несколько одновременно
- Размер бандла Visual Editor уменьшен на 30%
- Расширенные опции конфигурации middleware
- Обновленное поведение команды fill для лучшего управления контентом
- Повышенная стабильность с полным обновлением файлов деклараций контента
- Интеллектуальное управление повторными попытками для точности перевода
- Параллелизация для ускорения обработки переводов
- Умное разбиение на чанки для работы с большими файлами в пределах ограничений AI контекста
Производительность: Кэширование для ускорения сборок
Вместо повторной сборки деклараций контента с помощью esbuild при каждой сборке, в версии 7 реализована стратегия кэширования, которая ускоряет процесс сборки.
Копировать код в буфер обмена
Новая система кэширования:
- Сохраняет скомпилированные декларации контента, чтобы избежать повторной обработки
- Обнаруживает изменения и перестраивает только изменённые файлы
- Значительно сокращает время сборки (build time) для крупных проектов
TypeScript: Генерация типов, специфичных для локали
Типы TypeScript теперь генерируются для каждой локали отдельно, обеспечивая более строгую типизацию и устраняя объединённые типы для всех локалей.
Поведение в v6:
Копировать код в буфер обмена
Поведение в v7:
Копировать код в буфер обмена
Преимущества:
- Более точное автозаполнение в вашей IDE
- Лучшая типобезопасность без смешения типов между локалями
- Повышенная производительность за счёт уменьшения сложности типов
Оптимизация бандла: Локали как строки
Тип Locales больше не является перечислением (enum), что означает, что он теперь полностью поддаётся tree-shaking и не будет раздувать ваш бандл тысячами неиспользуемых записей локалей.
v6:
Копировать код в буфер обмена
v7:
Копировать код в буфер обмена
ПосколькуLocalesбольше не является перечислением (enum), вам нужно будет изменить тип сLocalesнаLocale, чтобы получить локаль в виде типа.
Подробнее смотрите в реализации.
Новые режимы маршрутизации для большей гибкости
В версии 7 введена единая конфигурация routing.mode, которая заменяет предыдущие опции prefixDefault и noPrefix, предоставляя более детальный контроль над структурой URL.
Доступные режимы маршрутизации
prefix-no-default(по умолчанию): у локали по умолчанию нет префикса, у остальных локалей префикс есть/dashboard(en) или/fr/dashboard(fr)
prefix-all: у всех локалей есть префикс/en/dashboard(en) или/fr/dashboard(fr)
no-prefix: Нет префиксов локали в URL (локаль обрабатывается через хранилище/заголовки)/dashboardдля всех локалей
search-params: Локаль передается как параметр запроса/dashboard?locale=enили/dashboard?locale=fr
Базовая конфигурация
Копировать код в буфер обмена
Соответствие GDPR: хранение в localStorage / cookies
v7 уделяет приоритетное внимание конфиденциальности пользователей, используя localStorage в качестве механизма хранения по умолчанию вместо cookies. Это изменение помогает соблюдать требования GDPR, избегая необходимости получать согласие на использование cookies для предпочтений локали.
Опции конфигурации хранения
Новое поле routing.storage также доступно в дополнение к предыдущим опциям middleware.cookieName и middleware.serverSetCookie, предлагая гибкие конфигурации хранения:
Копировать код в буфер обмена
Пример конфигурации, соответствующей GDPR
Для производственных приложений, которым нужно сбалансировать функциональность и соответствие GDPR:
Копировать код в буфер обмена
Включение / отключение хранения cookie
Пример с использованием React / Next.js:
Можно определить глобально:
Копировать код в буфер обмена
Можно переопределить локально для каждого хука:
Копировать код в буфер обмена
Примечание: По умолчанию куки включены. Примечание: Ознакомьтесь с требованиями GDPR к куки для вашего конкретного случая.
Визуальный редактор: пакет стал на 30% меньше
Пакет Визуального редактора был оптимизирован и стал на 30% меньше по сравнению с предыдущей версией благодаря:
- Улучшению производительности редактора кода
- Удалению ненужных зависимостей от основных пакетов Intlayer
- Лучшей tree-shaking и упаковке модулей
Это приводит к более быстрой загрузке и улучшенной производительности приложения во время выполнения.
Автоматическое форматирование кода: конфигурация formatCommand
v7 вводит опцию formatCommand в конфигурации редактора, позволяя вам автоматически форматировать файлы содержимого при их записи Intlayer. Это обеспечивает согласованный стиль кода и форматирование во всех файлах объявления контента.
Если не установлено, Intlayer попытается автоматически определить команду форматирования. Путем попытки разрешить следующие команды: prettier, biome, eslint.
Конфигурация
Опция formatCommand принимает строковый шаблон, где {{file}} будет заменена на фактический путь файла:
Копировать код в буфер обмена
Поддерживаемые форматеры
Вы можете использовать любой форматер кода, который принимает пути к файлам в качестве аргументов:
Using Biome:
Копировать код в буфер обмена
Using Prettier:
Копировать код в буфер обмена
Using ESLint:
Копировать код в буфер обмена
Using Bun's built-in formatter:
Копировать код в буфер обмена
Преимущества
- Согласованное форматирование: Все файлы содержимого автоматически форматируются в соответствии с рекомендациями стиля вашего проекта
- Опыт разработчика: Нет необходимости вручную форматировать файлы после их создания Intlayer
- Согласованность команды: Гарантирует, что все члены команды имеют одинаковое форматирование, применяемое к файлам содержимого
- Интеграция CI/CD: Файлы содержимого сохраняют согласованное форматирование в автоматизированных рабочих процессах
Как это работает
When Intlayer writes or updates a content declaration file (.content.ts, .content.js, etc.), it automatically runs the specified format command on the file. The {{file}} placeholder is replaced with the actual file path, and the command is executed in the project's base directory.
Dictionary Configuration: Better organization and structure
v7 представляет новый dedicated раздел конфигурации dictionary, который обеспечивает лучшую организацию параметров, связанных со словарем, и улучшенное управление содержимым.
Новая структура конфигурации словаря
Свойство fill было перемещено из раздела content в новый раздел dictionary, обеспечивая более четкое разделение ответственности:
Конфигурация v6:
Копировать код в буфер обмена
Конфигурация v7:
Копировать код в буфер обмена
Преимущества новой структуры
- Более четкая организация: Параметры, характерные для словаря, теперь сгруппированы вместе
- Лучшее разделение ответственности: Обнаружение содержимого и операции со словарем четко разделены
- Улучшенная поддерживаемость: Легче понять и модифицировать конфигурации, связанные со словарем
- Будущая расширяемость: Раздел словаря может вмещать дополнительные параметры, характерные для словаря
- Комплексное управление словарем: Включает свойства, такие как
title,live,priority,tags,versionиdescriptionдля создания и управления новыми словарями
Использование конфигурации
Конфигурация словаря служит двум основным целям:
- Значения по умолчанию: Определение значений по умолчанию при создании файлов объявления контента
- Поведение при отсутствии значения: Предоставление резервных значений, когда определенные поля не определены, позволяя вам глобально определить поведение операций словаря
Раздел словаря включает комплексные свойства для управления словарем:
fill: Поведение автозаполнения при генерации контентаtitle: Заголовок по умолчанию для новых словарейlive: Конфигурация синхронизации в реальном времени для обновленийpriority: Параметры приоритета для разрешения словаряtags: Теги по умолчанию для организации контентаversion: Управление версиями для обновлений словаряdescription: Описание по умолчанию для нового контента
Для получения дополнительной информации о файлах объявления контента и применении значений конфигурации см. Документация по файлам контента.
Команда fill: обновленное поведение для лучшего управления контентом
v7 вводит улучшенное поведение команды fill, обеспечивая более предсказуемое и гибкое управление контентом:
Новое поведение fill
fill: true. Перезаписывает текущий файл заполненным контентом для всех локалейfill: "path/to/file". Заполняет указанный файл без изменения текущего файлаfill: false. Полностью отключает авто-заполнение
Расширенная поддержка сложных структур контента
Команда fill теперь поддерживает сложные структуры деклараций контента, включая:
- Составные объекты: декларации контента, которые ссылаются на другие объекты
- Деструктурированный контент: контент, использующий паттерны деструктуризации
- Вложенные ссылки: объекты, которые вызывают друг друга в сложных иерархиях
- Динамические структуры контента: контент с условными или вычисляемыми свойствами
Преимущества
- Более ясное намерение: поведение теперь более явно указывает, что именно изменяется
- Лучшее разделение: Файлы с контентом могут храниться отдельно от заполненных переводов
- Улучшенный рабочий процесс: Разработчики получают больше контроля над тем, где хранятся переводы
- Поддержка сложных структур: Обработка сложных архитектур контента с множеством взаимосвязанных объектов
Пример использования
Копировать код в буфер обмена
Повышенная стабильность и управление переводами
v7 вводит несколько улучшений, чтобы сделать перевод контента более надежным и эффективным:
Полные обновления файлов декларации контента
Система теперь обновляет файлы .content.{ts,js,cjs,mjs}, а не частично, обеспечивая:
- Целостность данных: Полная перезапись файла предотвращает частичные обновления, которые могут повредить содержимое
- Согласованность: Все локали обновляются атомарно, поддерживая синхронизацию
- Надежность: Снижает риск неполных или поврежденных файлов содержимого
Интеллектуальное управление повторными попытками
Новые механизмы повторных попыток предотвращают отправку содержимого в неправильных форматах и избегают срыва всего процесса заполнения, если один из запросов не удался.
Параллелизация для ускорения обработки
Операции перевода теперь выполняются в очереди с параллельным запуском, что значительно ускоряет процесс.
Умное разбиение на части для больших файлов
Продвинутые стратегии разбиения обрабатывают большие файлы содержимого, не превышая контекстные окна ИИ:
Пример рабочего процесса
Копировать код в буфер обмена
Система автоматически:
- Анализирует размер и структуру содержимого
- Соответствующим образом разбивает содержимое на части
- Обрабатывает части параллельно
- Проверяет и при необходимости повторяет попытки
- Восстанавливает полный файл
Заметки по миграции с версии v6
Удалённые конфигурации
middleware.cookieName: заменён наrouting.storagemiddleware.serverSetCookie: заменён наrouting.storagemiddleware.prefixDefault: заменён наrouting.modemiddleware.noPrefix: заменён наrouting.mode
Новые конфигурации
editor.formatCommand: Новый параметр для автоматического форматирования кода файлов содержимого
Сопоставление миграции
Сопоставление конфигураций
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Конфигурация v6 | Конфигурация v7 |
|---|---|
autoFill: xxx | fill: xxx |
prefixDefault: false | mode: 'prefix-no-default' |
prefixDefault: true | mode: 'prefix-all' |
noPrefix: true | mode: 'no-prefix' |
cookieName: 'my-locale' | storage: { type: 'cookie', name: 'my-locale' } |
serverSetCookie: 'never' | storage: false или удалите cookie из массива storage` |
Пример миграции
До (v6):
Копировать код в буфер обмена
После (v7):
Копировать код в буфер обмена
Соответствие содержимого словаря
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Содержимое словаря v6 | Содержимое словаря v7 |
|---|---|
autoFill: xxx | fill: xxx |
Пример миграции
До (v6):
Копировать код в буфер обмена
После (v7):
Копировать код в буфер обмена
Заметки по миграции с v5 на v6
Подробнее смотрите в заметках по миграции с v5 на v6.
