Задайте вопрос и получите краткое содержание документа через любого ИИ-провайдера на этой странице
История версий
- "Добавлена глобальная конфигурация"v6.0.020.09.2025
- "Добавлена переменная `{{fileName}}`"v6.0.017.09.2025
- "Инициализация истории"v5.5.1029.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Автоматическое заполнение файлов объявления контента переводов
Автоматическое заполнение файлов объявления контента в вашей CI — это способ ускорить рабочий процесс разработки.
Понимание поведения
Команда fill включает два режима:
- Complete: Автоматически заполняет все недостающее содержимое для каждой локали и редактирует текущий файл или другой файл, если он указан. То есть режим complete пропустит перевод существующего содержимого, если оно уже переведено.
- Review: Автоматически заполняет все содержимое для каждой локали и генерирует для конкретного файла или другого файла, если он указан.
Команда fill будет обрабатывать все ваши файлы объявления содержимого локали. То есть она не будет обрабатывать ваше удаленное содержимое из CMS. CMS включает собственное управление переводами.
Если вы используете плагины, такие как @intlayer/sync-json-plugin, Intlayer преобразует файлы JSON в файлы объявления содержимого локали. То есть они будут обработаны командой fill.
Новые сгенерированные файлы включают инструкцию filled в качестве метаданных словаря. Эта инструкция будет использоваться Intlayer для определения того, был ли файл автоматически заполнен или нет, и пропустит этот файл от повторного перевода, если она присутствует.
Intlayer также будет учитывать следующую инструкцию для автоматического заполнения:
- Из вашего
.content.{ts|js|json}→ инструкцияfill - Из вашего файла конфигурации
.intlayer.config.ts→ инструкцияdictionary.fill - По умолчанию будет установлено значение
true
Для файлов объявления содержимого для каждой локали инструкция true будет заменена на ./{{fileName}}.fill.content.json. Это потому, что файл объявления содержимого для каждой локали не может получать дополнительное локализованное содержимое. Поэтому он будет генерировать новый файл, чтобы не перезаписать существующий файл.
Поведение по умолчанию
По умолчанию fill установлено в true глобально, что означает, что Intlayer будет автоматически заполнять все файлы контента и редактировать сам файл. Это поведение можно настроить несколькими способами:
Глобальные параметры конфигурации
fill: true(по умолчанию) - Автоматически заполнить все локали и отредактировать текущий файлfill: false- Отключить автоматическое заполнение для этого файла контентаfill: "./relative/path/to/file"- Создать/обновить указанный файл без редактирования текущего, указав относительный путь, разрешенный на основе расположения текущего файлаfill: "/absolute/path/to/file"- Создать/обновить указанный файл без редактирования текущего, указав относительный путь, разрешенный на основе расположения базовой директории (полеbaseDirв файле конфигурации.intlayer.config.ts)fill: "C:\absolute\path\to\file"- Создать/обновить указанный файл без редактирования текущего, указав абсолютный путь, разрешенный на основе вашей операционной системыfill: { [key in Locales]?: string }- Создать/обновить указанный файл для каждой локали
Изменения поведения в v7
В v7 поведение команды fill было обновлено:
fill: true- Перезаписывает текущий файл с заполненным содержимым для всех локалейfill: "path/to/file"- Заполняет указанный файл без изменения текущего файлаfill: false- Полностью отключает автоматическое заполнение
При использовании опции пути для записи в другой файл механизм заполнения работает через отношение master-slave между файлами объявления содержимого. Основной файл (master) служит источником истины, и при его обновлении Intlayer автоматически применит эти изменения к производным (заполненным) файлам объявления, указанным в пути.
Переводы файлов декларации автозаполнения контента
Файлы декларации автозаполнения контента, это способ ускорить ваш процесс разработки.
Механизм автозаполнения работает через мастер-слейв отношения между файлами декларации контента. Когда основной (мастер) файл обновляется, Intlayer автоматически применяет эти изменения к производным (автозаполненным) файлам декларации.
Копировать код в буфер обмена
import { Locales, type Dictionary } from "intlayer";const exampleContent = { key: "example", locale: Locales.ENGLISH, autoFill: "./example.content.json", content: { contentExample: "Это пример контента", // пример контента },} satisfies Dictionary;export default exampleContent;Вот файл декларации контента для каждого локаля, использующий инструкцию autoFill.
Затем, когда вы выполните следующую команду:
Копировать код в буфер обмена
npx intlayer fill --file 'src/components/example/example.content.ts'Intlayer автоматически сгенерирует производный файл декларации по пути src/components/example/example.content.json, заполняя все локали, которые ещё не объявлены в основном файле.
Копировать код в буфер обмена
{ "key": "example", "content": { "contentExample": { "nodeType": "translation", "translation": { "fr": "Ceci est un exemple de contenu", "es": "Este es un ejemplo de contenido", }, }, },}После этого оба файла деклараций будут объединены в один словарь, доступный через стандартный хук useIntlayer("example") (react) / композицию (vue).
Глобальная конфигурация
Вы можете настроить глобальную конфигурацию автозаполнения в файле 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], }, dictionary: { // Автогенерация отсутствующих переводов для всех словарей fill: "./{{fileName}}Filled.content.ts", // // fill: "/messages/{{locale}}/{{key}}/{{fileName}}.content.json", // // fill: true, // автогенерация отсутствующих переводов для всех словарей, как при использовании "./{{fileName}}.content.json" // // fill: { // en: "./{{fileName}}.en.content.json", // fr: "./{{fileName}}.fr.content.json", // es: "./{{fileName}}.es.content.json", // }, },};export default config;Вы по-прежнему можете настраивать каждый словарь отдельно, используя поле fill в файлах содержимого. Intlayer сначала рассмотрит конфигурацию каждого словаря, а затем вернётся к глобальной конфигурации.
Формат автозаполненного файла
Рекомендуемый формат для автоматически заполняемых файлов деклараций, JSON, который помогает избежать ограничений форматирования. Однако Intlayer также поддерживает форматы .ts, .js, .mjs, .cjs и другие.
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: "./example.filled.content.ts", content: { // Ваше содержимое },};Это сгенерирует файл по адресу:
Копировать код в буфер обмена
src/components/example/example.filled.content.tsГенерация файлов
.js,.tsи подобных работает следующим образом:
- Если файл уже существует, Intlayer будет парсить его с помощью AST (Абстрактного синтаксического дерева), чтобы найти каждое поле и вставить отсутствующие переводы.
- Если файл не существует, Intlayer сгенерирует его, используя шаблон файла декларации содержимого по умолчанию.
Абсолютные пути
Поле autoFill также поддерживает абсолютные пути.
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: "/messages/example.content.json", content: { // Ваше содержимое },};Это сгенерирует файл по адресу:
Копировать код в буфер обмена
/messages/example.content.jsonАвтоматическая генерация файлов деклараций содержимого для каждого локаля
Поле autoFill также поддерживает генерацию файлов деклараций содержимого для каждого локаля.
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: { fr: "./example.fr.content.json", es: "./example.es.content.json", }, content: { // Ваше содержимое },};Это сгенерирует два отдельных файла:
src/components/example/example.fr.content.jsonsrc/components/example/example.es.content.json
В этом случае, если объект не содержит все локали, Intlayer пропускает генерацию оставшихся локалей.
Фильтрация автозаполнения для конкретной локали
Использование объекта в поле autoFill позволяет применять фильтры и генерировать файлы только для определённых локалей.
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: { fr: "./example.fr.content.json", }, content: { // Ваше содержимое },};Это сгенерирует только файл перевода на французский язык.
Переменные пути
Вы можете использовать переменные внутри пути autoFill для динамического определения целевых путей для сгенерированных файлов.
Доступные переменные:
{{locale}}– Код локали (например,fr,es){{fileName}}– Имя файла (например,index){{key}}– Ключ словаря (например,example)
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: "/messages/{{locale}}/{{key}}.content.json", content: { // Ваше содержимое },};Это сгенерирует:
/messages/fr/example.content.json/messages/es/example.content.json
Копировать код в буфер обмена
const exampleContent = { key: "example", autoFill: "./{{fileName}}.content.json", content: { // Ваше содержимое },};Это сгенерирует:
./index.content.json./index.content.json