Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn
Bằng cách tích hợp Intlayer MCP Server vào trợ lý AI ưa thích của bạn, bạn có thể truy xuất toàn bộ tài liệu trực tiếp từ ChatGPT, DeepSeek, Cursor, VSCode, v.v.
Xem tài liệu MCP ServerNội dung của trang này đã được dịch bằng AI.
Xem phiên bản mới nhất của nội dung gốc bằng tiếng AnhNếu bạn có ý tưởng để cải thiện tài liệu này, vui lòng đóng góp bằng cách gửi pull request trên GitHub.
Liên kết GitHub tới tài liệuSao chép Markdown của tài liệu vào bộ nhớ tạm
Auto-Generate Translations in a CI/CD Pipeline
Intlayer allows the automatic generation of translations for your content declaration files. There are multiple ways to achieve this depending on your workflow.
Using the CMS
With Intlayer, you can adopt a workflow where only a single locale is declared locally, while all translations are managed remotely through the CMS. This allows content and translations to be completely detached from the codebase, offering more flexibility for content editors and enabling Live Sync (no need to rebuild the application to apply changes).
Example Configuration
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
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 credentials if you use the CMS clientId: process.env.INTLAYER_CLIENT_ID, clientSecret: process.env.INTLAYER_CLIENT_SECRET, liveSync: true, }, ai: { applicationContext: "This is a test application", // Helps ensure consistent translation generation },};export default config;To learn more about the CMS, refer to the official documentation.
Using Husky
You can integrate translation generation into your local Git workflow using Husky.
Example Configuration
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.SPANISH, Locales.FRENCH], requiredLocales: [Locales.ENGLISH], // Optional locales are handled remotely 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, // Use your own API key applicationContext: "This is a test application", // Helps ensure consistent translation generation },};export default config;Sao chép đoạn mã vào khay nhớ tạm (clipboard)
npx intlayer build # To ensure dictionaries are up to datenpx intlayer fill --unpushed --mode fill # Only fill missing content, does not update existing onesFor more information about Intlayer CLI commands and their usage, refer to the CLI documentation.
If you have multiple apps in your repo using separate intlayer instances, you can use the --base-dir argument like this:
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
# App 1npx intlayer build --base-dir ./app1npx intlayer fill --base-dir ./app1 --unpushed --mode fill# App 2npx intlayer build --base-dir ./app2npx intlayer fill --base-dir ./app2 --unpushed --mode fillUsing GitHub Actions
Intlayer provides a CLI command to autofill and review dictionary content. This can be integrated into your CI/CD workflow using GitHub Actions.
Sao chép đoạn mã vào khay nhớ tạm (clipboard)
name: Intlayer Auto-Fill# Trigger conditions for this 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: # Step 1: Get the latest code from the repository - name: ⬇️ Checkout repository uses: actions/checkout@v4 with: persist-credentials: true # Keep credentials for creating PRs fetch-depth: 0 # Get full git history for diff analysis # Step 2: Set up Node.js environment - name: 🟢 Set up Node.js uses: actions/setup-node@v4 with: node-version: 20 # Use Node.js 20 LTS for stability # Step 3: Install project dependencies - name: 📦 Install dependencies run: npm install # Step 4: Install Intlayer CLI globally for translation management - name: 📦 Install Intlayer run: npm install -g intlayer-cli # Step 5: Build the Intlayer project to generate translation files - name: ⚙️ Build Intlayer project run: npx intlayer build # Step 6: Use AI to automatically fill missing translations - name: 🤖 Auto-fill missing translations run: npx intlayer fill --git-diff --mode fill --provider $AI_PROVIDER --model $AI_MODEL --api-key $AI_API_KEY # Step 7: Check if there are changes and commit them - name: � Check for changes id: check-changes run: | if [ -n "$(git status --porcelain)" ]; then echo "has-changes=true" >> $GITHUB_OUTPUT else echo "has-changes=false" >> $GITHUB_OUTPUT fi # Step 8: Commit and push changes if any exist - name: 📤 Commit and push changes 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: auto-fill missing translations [skip ci]" git push origin HEAD:${{ github.head_ref }}To set up the environment variables, go to GitHub → Settings → Secrets and variables → Actions and add the secret .
Same as for Husky, in the case of a monorepo, you can use the --base-dir argument to sequentially treat each app.
By default, the --git-diff argument filters dictionaries that include changes from base (default origin/main) to current branch (default: HEAD).
For more information about Intlayer CLI commands and their usage, refer to the CLI documentation.