Автор:
    Дата створення:2025-05-20Останнє оновлення:2026-10-08

    Автоматичне генерування перекладів у CI/CD конвеєрі

    Intlayer дозволяє автоматично створювати переклади для ваших файлів декларації контенту. Існує кілька способів досягти цього залежно від вашого робочого процесу.

    Зміст

    Використання CMS

    З Intlayer ви можете використовувати робочий процес, у якому локально оголошується лише одна локаль, тоді як усі переклади керуються віддалено через CMS. Це дозволяє повністю відокремити вміст і переклади від codebase, надаючи редакторам вмісту більше гнучкості та забезпечуючи Live Sync (немає потреби перебудовувати застосунок, щоб застосувати зміни).

    Приклад конфігурації

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH],
        requiredLocales: [Locales.ENGLISH], // Optional locales will be managed remotely
        defaultLocale: Locales.ENGLISH,
      },
      editor: {
        // Облікові дані CMS, якщо ви використовуєте CMS
        clientId: process.env.INTLAYER_CLIENT_ID,
        clientSecret: process.env.INTLAYER_CLIENT_SECRET,
        liveSync: true,
      },
      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
    # Додаток 1
    npx intlayer build --base-dir ./app1
    npx intlayer fill --base-dir ./app1 --unpushed --mode fill
    
    # Додаток 2
    npx intlayer build --base-dir ./app2
    npx intlayer fill --base-dir ./app2 --unpushed --mode fill
    

    Використання GitHub Actions

    Intlayer надає CLI-команду для автоматичного заповнення та перегляду вмісту словників. Це можна інтегрувати у ваш робочий процес CI/CD за допомогою GitHub Actions.

    .github/workflows/intlayer-translate.yml
    name: Intlayer Авто-заповнення
    # Умови запуску цього workflow
    on:
      pull_request:
        branches:
          - "main"
    
    permissions:
      contents: write
      pull-requests: write
    
    concurrency:
      group: "autofill-${{ github.ref }}"
      cancel-in-progress: true
    
    jobs:
      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 для аналізу diff
    
          # Крок 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: Використати AI для автоматичного заповнення відсутніх перекладів
          - 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 "action@github.com"
              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 documentation.