--- createdAt: 2025-05-20 updatedAt: 2025-08-13 title: "Інтеграція CI/CD" description: "Дізнайтеся, як інтегрувати Intlayer у ваш CI/CD конвеєр для автоматизованого керування контентом та розгортання." keywords: - CI/CD - Безперервна інтеграція - Безперервне розгортання - Автоматизація - Інтернаціоналізація - Документація - Intlayer slugs: - doc - concept - ci-cd history: - version: 5.5.10 date: 2025-06-29 changes: Ініціалізація історії --- # Автоматичне генерування перекладів у CI/CD конвеєрі Intlayer дозволяє автоматично створювати переклади для ваших файлів декларації контенту. Існує кілька способів досягти цього залежно від вашого робочого процесу. ## Зміст ## Використання CMS З Intlayer ви можете використовувати робочий процес, у якому локально оголошується лише одна локаль, тоді як усі переклади керуються віддалено через CMS. Це дозволяє повністю відокремити вміст і переклади від codebase, надаючи редакторам вмісту більше гнучкості та забезпечуючи Live Sync (немає потреби перебудовувати застосунок, щоб застосувати зміни). ### Приклад конфігурації ```ts fileName="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, зверніться до [офіційної документації](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/intlayer_CMS.md). ## Використання Husky Ви можете інтегрувати генерацію перекладів у ваш локальний Git-воркфлоу за допомогою [Husky](https://typicode.github.io/husky/). ### Приклад конфігурації ```ts fileName="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; ``` ```bash fileName=".husky/pre-push" npx intlayer build # Щоб переконатися, що словники оновлені npx intlayer fill --unpushed --mode fill # Заповнює лише відсутній вміст, не оновлює існуючий ``` > For more information about Intlayer CLI commands and their usage, refer to the [CLI documentation](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md). > > If you have multiple apps in your repo using separate intlayer instances, you can use the `--base-dir` argument like this: ```bash fileName=".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. ```yaml fileName=".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](https://github.com/aymericzip/intlayer/blob/main/docs/docs/uk/cli/index.md).