GitHub Actions
使用 GitHub Actions 和 Lingo.dev CI/CD 进行 AI 翻译
什么是 GitHub Actions?
GitHub Actions 是集成在 GitHub 中的 CI/CD 和自动化平台。用户可以通过 YAML 文件定义工作流,实现代码的构建、测试、部署或根据仓库事件自动执行任务。
什么是 Lingo.dev CI/CD?
Lingo.dev CI/CD 是一款基于 AI 的应用和内容本地化工具,适用于 CI/CD 流程,确保翻译始终保持最新。对于 GitHub,Lingo.dev 提供了专用的 GitHub Action,简化集成流程。
关于本指南
本指南介绍如何通过 Lingo.dev GitHub Action 和 Lingo.dev Engine 配置 Lingo.dev CI/CD。
步骤 1. 配置 Lingo.dev CLI
首先,请按照 Lingo.dev CLI 的 快速入门 操作。
完成后,您将获得:
- 一个 Lingo.dev 的 API 密钥
- 一个用于配置翻译流水线行为的
i18n.json文件 - 使用
npx lingo.dev@latest run翻译内容的能力
步骤 2. 配置仓库密钥
- 进入 设置 > Secrets and variables > Actions。
- 点击 新建仓库密钥。
- 在 名称 字段中输入
LINGODOTDEV_API_KEY。 - 在 密钥 字段中输入 Lingo.dev API 密钥。
- 点击 添加密钥。
步骤 3. 选择工作流
您可以根据不同需求以多种方式配置 Lingo.dev CI/CD,以支持不同的工作流。以下是我们推荐并提供示例的几种工作流:
- 当内容合并到
main时,将翻译提交到main - 当内容合并到
main时,从main创建一个拉取请求 - 当内容合并到功能分支时,将翻译提交到该分支
- 当内容合并到功能分支时,从该分支创建一个拉取请求
但没有“最佳”工作流。每种方式都有其权衡。如果你不确定从哪里开始,建议先选择第一个选项。这是最简单、最隐蔽的工作流。
步骤 4. 设置工作流
-
在仓库中创建一个
.github/workflows目录:mkdir -p .github/workflows请确保在
.github的开头包含.。 -
在
.github/workflows目录下创建一个 YAML 文件:touch .github/workflows/translate.yml文件名无关紧要。
-
将其中一个 示例工作流 复制到该文件中。
-
如果工作流会创建拉取请求:
- 进入 Settings > Actions > General。
- 启用 Allow GitHub Actions to create and approve pull requests。
- 点击 Save。
-
将更改提交并推送到
main分支:git add .github/workflows/translate.yml git commit -m "feat: GitHub action for Lingo.dev" git push
(可选)步骤 5. 自定义工作流
Lingo.dev CI/CD 提供了默认值,大多数情况下无需自定义。你可以通过向 GitHub Action 传递输入参数来覆盖这些默认值:
可用输入参数:
version:Lingo.dev CLI 版本(默认值:"latest")api-key:Lingo.dev 平台 API Key(必填)pull-request:是否创建包含更改的拉取请求(默认值:false)commit-message:自定义提交信息(默认值:"feat: update translations via @LingoDotDev")pull-request-title:自定义拉取请求标题(默认值:"feat: update translations via @LingoDotDev")commit-author-name:Git 提交作者名称(默认值:"Lingo.dev")commit-author-email:Git 提交作者邮箱(默认值:"[email protected]")working-directory:工作目录(默认值:".")process-own-commits:处理由此 Action 创建的提交(默认值:false)parallel:并行模式运行(默认值:false)
自定义输入参数示例:
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
commit-message: "My custom commit message!"
parallel: true
示例工作流
提交到 main 分支
当内容合并到 main 时,将翻译提交到 main。
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
从 main 分支发起 pull request
当内容合并到 main 时,从 main 创建一个 pull request。
name: Translate
on:
push:
branches: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
提交到功能分支
当内容合并到功能分支时,将翻译提交到该分支。
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
从功能分支发起 pull request
当内容合并到功能分支时,从该分支创建一个 pull request。
name: Translate
on:
push:
branches-ignore: [main]
permissions:
contents: write
pull-requests: write
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lingo.dev
uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
pull-request: true
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}