首页演练场案例展示应用文档博客
    • 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和应用路由器
      Next.js 15
      Next.js 无 locale URL
      Next.js和页面路由器
      编译器
    • 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集成
    Creation:2025-05-20Last update:2025-08-13
    将此文档参考到您的 AI 助手
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商

    版本历史

    1. "初始化历史记录"
      v5.5.102025/6/29

    此页面的内容已使用 AI 翻译。

    查看英文原文的最新版本
    编辑此文档

    如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。

    文档的 GitHub 链接
    Copy

    复制文档 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, // CMS 使用的应用程序 URL    clientId: process.env.INTLAYER_CLIENT_ID, // CMS 凭证    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    applicationContext: "这是一个测试应用程序", // 有助于确保一致的翻译生成  },};export default config;

    要了解有关 CMS 的更多信息,请参阅官方文档。

    使用 Husky

    您可以使用 Husky 将翻译生成集成到本地 Git 工作流中。

    示例配置

    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: "这是一个测试应用程序", // 有助于确保翻译生成的一致性  },};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 命令,用于自动填充和审查词典内容。您可以将其集成到使用 GitHub Actions 的 CI/CD 工作流中。

    .github/workflows/intlayer-translate.yml
    复制代码

    复制代码到剪贴板

    name: Intlayer 自动填充# 触发此工作流的条件on:  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:      # 第一步:从仓库获取最新代码      - name: ⬇️ 签出仓库        uses: actions/checkout@v4        with:          persist-credentials: true # 保留凭据以创建拉取请求          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:使用 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 "[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 → 设置 → Secrets and variables → Actions 并添加密钥(API_KEY)。

    与 Husky 相同,在单一仓库(monorepo)的情况下,可以使用 --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, // CMS 使用的应用程序 URL    clientId: process.env.INTLAYER_CLIENT_ID, // CMS 凭证    clientSecret: process.env.INTLAYER_CLIENT_SECRET,  },  ai: {    applicationContext: "这是一个测试应用程序", // 有助于确保一致的翻译生成  },};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: "这是一个测试应用程序", // 有助于确保翻译生成的一致性  },};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 自动填充# 触发此工作流的条件on:  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:      # 第一步:从仓库获取最新代码      - name: ⬇️ 签出仓库        uses: actions/checkout@v4        with:          persist-credentials: true # 保留凭据以创建拉取请求          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:使用 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 "[email protected]"          git config --local user.name "GitHub Action"          git add .          git commit -m "chore: 自动填充缺失的翻译 [skip ci]"          git push origin HEAD:${{ github.head_ref }}