ГлавнаяПесочницаВитринаПриложениеДокументБлог
    • Englishанглийский
      EN
    • русскийрусский
      RU
    • 日本語японский
      JA
    • françaisфранцузский
      FR
    • 한국어корейский
      KO
    • 中文китайский
      ZH
    • españolиспанский
      ES
    • Deutschнемецкий
      DE
    • العربيةарабский
      AR
    • italianoитальянский
      IT
    • British Englishбританский английский
      EN-GB
    • portuguêsпортугальский
      PT
    • हिन्दीхинди
      HI
    • Türkçeтурецкий
      TR
    • polskiпольский
      PL
    • Indonesiaиндонезийский
      ID
    • Tiếng Việtвьетнамский
      VI
    • українськаукраинский
      UK
    /
    Фильтровать документы по фреймворку
    Alt+←
    Почему Intlayer?
    Начать
    Концепция
    • Как работает Intlayer
    • Конфигурация
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Визуальный редактор
    • CMS
    • Интеграция CI/CD
    • ПереводМножественное числоПеречислениеУсловиеПолВставкаФайлВложенностьMarkdownHTMLПолучение функции
    • Файл для каждой локали
    • Компилятор
    • Автозаполнение
    • Тестирование
    • Оптимизация пакета
    Окружающая среда
    • Next.js 14 и App Router
      Next.js 15
      Next.js без locale URL
      Next.js и Page Router
      Compiler
    • Tanstack Start Solid
    • Astro и React
      Astro и Svelte
      Astro и Vue
      Astro и Solid
      Astro и Preact
      Astro и Lit
      Astro и Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt и Vue
    • Vite и Solid
    • SvelteKit
    • Vite и Preact
    • Vite и Vanilla JS
    • Vite и Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native и Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx и React
    Plugins
    • JSON
    • gettext (.po)
    Расширение VS Code
    Агент
    • Сервер MCP
    • Навики агента
    Релизы
    • v8
    • v7
    • v6
    Бенчмарк
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Блог
    Задать вопрос
    1. Documentation
    2. Концепция
    3. Интеграция CI/CD
    Создание:2025-05-20Последнее обновление:2025-08-13
    Ссылайтесь на этот документ на ваш любимый ассистент AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI

    История версий

    1. "Инициализация истории"
      v5.5.1029.06.2025

    Содержимое этой страницы было переведено с помощью ИИ.

    Смотреть последнюю версию оригинального контента на английском
    Изменить эту документацию

    Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.

    Ссылка на документацию GitHub
    Копировать

    Копировать Markdown документа в буфер обмена

    Автоматическая генерация переводов в CI/CD конвейере

    Intlayer позволяет автоматически генерировать переводы для ваших файлов декларации контента. Существует несколько способов достичь этого в зависимости от вашего рабочего процесса.

    Использование CMS

    С Intlayer вы можете использовать рабочий процесс, при котором локально объявляется только одна локаль, а все переводы управляются удаленно через CMS. Это позволяет полностью отделить контент и переводы от кодовой базы, обеспечивая большую гибкость для редакторов контента и позволяя горячую перезагрузку контента (нет необходимости пересобирать приложение для применения изменений).

    Пример конфигурации

    intlayer.config.ts
    Копировать код

    Копировать код в буфер обмена

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Необязательные локали будут управляться удаленно    defaultLocale: Locales.ENGLISH,  },  editor: {    dictionaryPriorityStrategy: "distant_first", // Удалённый контент имеет приоритет    applicationURL: process.env.APPLICATION_URL, // URL приложения, используемый CMS    clientId: process.env.INTLAYER_CLIENT_ID, // Учетные данные CMS    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    applicationContext: "This is a test application", // Помогает обеспечить согласованное создание переводов  },};export default config;

    Чтобы узнать больше о CMS, обратитесь к официальной документации.

    Использование Husky

    Вы можете интегрировать генерацию переводов в ваш локальный Git-рабочий процесс с помощью Husky.

    Пример конфигурации

    intlayer.config.ts
    Копировать код

    Копировать код в буфер обмена

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Необязательные локали обрабатываются удалённо    defaultLocale: Locales.ENGLISH,  },  editor: {    clientId: process.env.INTLAYER_CLIENT_ID,    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    provider: "openai",    apiKey: process.env.OPENAI_API_KEY, // Используйте свой собственный API-ключ    applicationContext: "This is a test application", // Помогает обеспечить согласованное создание переводов  },};export default config;
    .husky/pre-push
    Копировать код

    Копировать код в буфер обмена

    npx intlayer build                          # Чтобы словари были актуальнымиnpx intlayer fill --unpushed --mode fill    # Заполняет только отсутствующий контент, не обновляет существующий
    Для получения дополнительной информации о командах Intlayer CLI и их использовании обратитесь к документации CLI.
    Если у вас несколько приложений в репозитории, использующих отдельные экземпляры intlayer, вы можете использовать аргумент --base-dir следующим образом:
    .husky/pre-push
    Копировать код

    Копировать код в буфер обмена

    # Приложение 1npx intlayer build --base-dir ./app1npx intlayer fill --base-dir ./app1 --unpushed --mode fill# Приложение 2npx intlayer build --base-dir ./app2npx intlayer fill --base-dir ./app2 --unpushed --mode fill

    Использование GitHub Actions

    Intlayer предоставляет команду CLI для автоматического заполнения и проверки содержимого словаря. Это можно интегрировать в ваш CI/CD процесс с использованием GitHub Actions.

    .github/workflows/intlayer-translate.yml
    Копировать код

    Копировать код в буфер обмена

    name: Intlayer Автозаполнение# Условия запуска этого workflowon:  pull_request:    branches:      - "main"permissions:  contents: write  pull-requests: writeconcurrency:  group: "autofill-${{ github.ref }}"  cancel-in-progress: truejobs:  autofill:    runs-on: ubuntu-latest    env:      # OpenAI      AI_MODEL: openai      AI_PROVIDER: gpt-5-mini      AI_API_KEY: ${{ secrets.AI_API_KEY }}    steps:      # Шаг 1: Получить последний код из репозитория      - name: ⬇️ Проверка репозитория        uses: actions/checkout@v4        with:          persist-credentials: true # Сохранять учетные данные для создания PR          fetch-depth: 0 # Получить полную историю git для анализа изменений      # Шаг 2: Настроить окружение Node.js      - name: 🟢 Настроить Node.js        uses: actions/setup-node@v4        with:          node-version: 20 # Использовать Node.js 20 LTS для стабильности      # Шаг 3: Установить зависимости проекта      - name: 📦 Установить зависимости        run: npm install      # Шаг 4: Глобально установить Intlayer CLI для управления переводами      - name: 📦 Установить Intlayer        run: npm install -g intlayer-cli      # Шаг 5: Собрать проект Intlayer для генерации файлов перевода      - name: ⚙️ Собрать проект Intlayer        run: npx intlayer build      # Шаг 6: Использовать ИИ для автоматического заполнения отсутствующих переводов      - name: 🤖 Автоматическое заполнение отсутствующих переводов        run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY      # Шаг 7: Проверить наличие изменений и зафиксировать их      - name: � Проверить изменения        id: check-changes        run: |          if [ -n "$(git status --porcelain)" ]; then            echo "has-changes=true" >> $GITHUB_OUTPUT          else            echo "has-changes=false" >> $GITHUB_OUTPUT          fi      # Шаг 8: Зафиксировать и отправить изменения, если они есть      - name: 📤 Зафиксировать и отправить изменения        if: steps.check-changes.outputs.has-changes == 'true'        run: |          git config --local user.email "[email protected]"          git config --local user.name "GitHub Action"          git add .          git commit -m "chore: автоматическое заполнение отсутствующих переводов [skip ci]"          git push origin HEAD:${{ github.head_ref }}

    Чтобы настроить переменные окружения, перейдите в GitHub → Settings → Secrets and variables → Actions и добавьте секрет .

    Аналогично Husky, в случае монорепозитория вы можете использовать аргумент --base-dir для последовательной обработки каждого приложения.
    По умолчанию аргумент --git-diff фильтрует словари, которые содержат изменения от базы (по умолчанию origin/main) до текущей ветки (по умолчанию: HEAD).
    Для получения дополнительной информации о командах Intlayer CLI и их использовании обратитесь к документации CLI.
    CMS
    Объявление контента
    Alt+→

    На этой странице

      Обсуждения анонимны и регулярно просматриваются для решения распространённых проблем. Не стесняйтесь делиться идеями функций, отзывами о документации или чем-либо, связанным с Intlayer, мы используем эту информацию для формирования нашей дорожной карты и улучшения продукта.

      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Необязательные локали будут управляться удаленно    defaultLocale: Locales.ENGLISH,  },  editor: {    dictionaryPriorityStrategy: "distant_first", // Удалённый контент имеет приоритет    applicationURL: process.env.APPLICATION_URL, // URL приложения, используемый CMS    clientId: process.env.INTLAYER_CLIENT_ID, // Учетные данные CMS    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    applicationContext: "This is a test application", // Помогает обеспечить согласованное создание переводов  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],    requiredLocales: [Locales.ENGLISH], // Необязательные локали обрабатываются удалённо    defaultLocale: Locales.ENGLISH,  },  editor: {    clientId: process.env.INTLAYER_CLIENT_ID,    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    provider: "openai",    apiKey: process.env.OPENAI_API_KEY, // Используйте свой собственный API-ключ    applicationContext: "This is a test application", // Помогает обеспечить согласованное создание переводов  },};export default config;
      npx intlayer build                          # Чтобы словари были актуальнымиnpx intlayer fill --unpushed --mode fill    # Заполняет только отсутствующий контент, не обновляет существующий
      # Приложение 1npx intlayer build --base-dir ./app1npx intlayer fill --base-dir ./app1 --unpushed --mode fill# Приложение 2npx intlayer build --base-dir ./app2npx intlayer fill --base-dir ./app2 --unpushed --mode fill
      name: Intlayer Автозаполнение# Условия запуска этого workflowon:  pull_request:    branches:      - "main"permissions:  contents: write  pull-requests: writeconcurrency:  group: "autofill-${{ github.ref }}"  cancel-in-progress: truejobs:  autofill:    runs-on: ubuntu-latest    env:      # OpenAI      AI_MODEL: openai      AI_PROVIDER: gpt-5-mini      AI_API_KEY: ${{ secrets.AI_API_KEY }}    steps:      # Шаг 1: Получить последний код из репозитория      - name: ⬇️ Проверка репозитория        uses: actions/checkout@v4        with:          persist-credentials: true # Сохранять учетные данные для создания PR          fetch-depth: 0 # Получить полную историю git для анализа изменений      # Шаг 2: Настроить окружение Node.js      - name: 🟢 Настроить Node.js        uses: actions/setup-node@v4        with:          node-version: 20 # Использовать Node.js 20 LTS для стабильности      # Шаг 3: Установить зависимости проекта      - name: 📦 Установить зависимости        run: npm install      # Шаг 4: Глобально установить Intlayer CLI для управления переводами      - name: 📦 Установить Intlayer        run: npm install -g intlayer-cli      # Шаг 5: Собрать проект Intlayer для генерации файлов перевода      - name: ⚙️ Собрать проект Intlayer        run: npx intlayer build      # Шаг 6: Использовать ИИ для автоматического заполнения отсутствующих переводов      - name: 🤖 Автоматическое заполнение отсутствующих переводов        run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY      # Шаг 7: Проверить наличие изменений и зафиксировать их      - name: � Проверить изменения        id: check-changes        run: |          if [ -n "$(git status --porcelain)" ]; then            echo "has-changes=true" >> $GITHUB_OUTPUT          else            echo "has-changes=false" >> $GITHUB_OUTPUT          fi      # Шаг 8: Зафиксировать и отправить изменения, если они есть      - name: 📤 Зафиксировать и отправить изменения        if: steps.check-changes.outputs.has-changes == 'true'        run: |          git config --local user.email "[email protected]"          git config --local user.name "GitHub Action"          git add .          git commit -m "chore: автоматическое заполнение отсутствующих переводов [skip ci]"          git push origin HEAD:${{ github.head_ref }}