目標讀者: 本指南適用於 Microsoft 內部用戶 或 擁有預建 Co-op Translator GitHub App 必要憑證的團隊,或能自行建立自訂 GitHub App 的團隊。
透過 Co-op Translator GitHub Action,輕鬆自動化翻譯您儲存庫的文件。本指南將引導您設定此 Action,當您的原始 Markdown 檔案或圖片有變更時,自動建立包含更新翻譯的拉取請求。
[!IMPORTANT]
選擇合適的指南:
本指南說明如何使用 GitHub App ID 和 Private Key 進行設定。通常當您遇到以下情況時,需要使用此「組織指南」方法:
GITHUB_TOKEN
權限受限: 您的組織或儲存庫設定限制了標準GITHUB_TOKEN
預設授權的權限。特別是如果GITHUB_TOKEN
無法取得必要的write
權限(如contents: write
或pull-requests: write
),則 公開設定指南 中的工作流程將因權限不足而失敗。使用具明確授權權限的專用 GitHub App 可繞過此限制。若上述情況不適用於您:
若標準
GITHUB_TOKEN
在您的儲存庫中擁有足夠權限(即未受組織限制阻擋),請使用 使用 GITHUB_TOKEN 的公開設定指南。公開指南無需取得或管理 App ID 或 Private Key,僅依賴標準GITHUB_TOKEN
與儲存庫權限。
在設定 GitHub Action 前,請先準備好所需的 AI 服務憑證。
1. 必要:AI 語言模型憑證
您需要至少一種支援的語言模型憑證:
2. 選擇性:電腦視覺憑證(用於圖片翻譯)
請依照以下步驟,在您的儲存庫中設定 Co-op Translator GitHub Action:
此工作流程使用 GitHub App 認證,安全地代表您與儲存庫互動(例如建立拉取請求)。請選擇以下其中一種方式:
前往 Co-op Translator GitHub App 頁面。
選擇 Install 並選擇目標儲存庫所在的帳戶或組織。
選擇 Only select repositories,並選擇您的目標儲存庫(例如 PhiCookBook
)。點擊 Install。系統可能會要求您進行驗證。
1164076
。.pem
私鑰檔案的完整內容,由維護聯絡人提供。請妥善保管此金鑰,視同密碼。您需要將 GitHub App 憑證及 AI 服務憑證,以加密密鑰形式新增至儲存庫設定。
前往目標 GitHub 儲存庫(例如 PhiCookBook
)。
點選 Settings > Secrets and variables > Actions。
在 Repository secrets 下,點擊 New repository secret,為以下每個密鑰新增一筆。
必要密鑰(GitHub App 認證):
密鑰名稱 | 說明 | 值來源 |
---|---|---|
GH_APP_ID |
GitHub App 的 App ID(來自步驟 1) | GitHub App 設定 |
GH_APP_PRIVATE_KEY |
下載的 .pem 檔案完整內容 |
.pem 檔案(步驟 1) |
AI 服務密鑰(依前置條件新增所有適用者):
密鑰名稱 | 說明 | 值來源 |
---|---|---|
AZURE_SUBSCRIPTION_KEY |
Azure AI 服務(Computer Vision)金鑰 | Azure AI Foundry |
AZURE_AI_SERVICE_ENDPOINT |
Azure AI 服務(Computer Vision)端點 | Azure AI Foundry |
AZURE_OPENAI_API_KEY |
Azure OpenAI 服務金鑰 | Azure AI Foundry |
AZURE_OPENAI_ENDPOINT |
Azure OpenAI 服務端點 | Azure AI Foundry |
AZURE_OPENAI_MODEL_NAME |
您的 Azure OpenAI 模型名稱 | Azure AI Foundry |
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME |
您的 Azure OpenAI 部署名稱 | Azure AI Foundry |
AZURE_OPENAI_API_VERSION |
Azure OpenAI API 版本 | Azure AI Foundry |
OPENAI_API_KEY |
OpenAI API 金鑰 | OpenAI Platform |
OPENAI_ORG_ID |
OpenAI 組織 ID | OpenAI Platform |
OPENAI_CHAT_MODEL_ID |
特定 OpenAI 模型 ID | OpenAI Platform |
OPENAI_BASE_URL |
自訂 OpenAI API 基底 URL | OpenAI Platform |
最後,建立定義自動化工作流程的 YAML 檔案。
在儲存庫根目錄中,若不存在 .github/workflows/
資料夾,請先建立。
在 .github/workflows/
內建立名為 co-op-translator.yml
的檔案。
將以下內容貼入 co-op-translator.yml。
name: Co-op Translator
on:
push:
branches:
- main
jobs:
co-op-translator:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install Co-op Translator
run: |
python -m pip install --upgrade pip
pip install co-op-translator
- name: Run Co-op Translator
env:
PYTHONIOENCODING: utf-8
# Azure AI Service Credentials
AZURE_SUBSCRIPTION_KEY: $
AZURE_AI_SERVICE_ENDPOINT: $
# Azure OpenAI Credentials
AZURE_OPENAI_API_KEY: $
AZURE_OPENAI_ENDPOINT: $
AZURE_OPENAI_MODEL_NAME: $
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: $
AZURE_OPENAI_API_VERSION: $
# OpenAI Credentials
OPENAI_API_KEY: $
OPENAI_ORG_ID: $
OPENAI_CHAT_MODEL_ID: $
OPENAI_BASE_URL: $
run: |
# =====================================================================
# IMPORTANT: Set your target languages here (REQUIRED CONFIGURATION)
# =====================================================================
# Example: Translate to Spanish, French, German. Add -y to auto-confirm.
translate -l "es fr de" -y # <--- MODIFY THIS LINE with your desired languages
- name: Authenticate GitHub App
id: generate_token
uses: tibdex/github-app-token@v1
with:
app_id: $
private_key: $
- name: Create Pull Request with translations
uses: peter-evans/create-pull-request@v5
with:
token: $
commit-message: "🌐 Update translations via Co-op Translator"
title: "🌐 Update translations via Co-op Translator"
body: |
This PR updates translations for recent changes to the main branch.
### 📋 Changes included
- Translated contents are available in the `translations/` directory
- Translated images are available in the `translated_images/` directory
---
🌐 Automatically generated by the [Co-op Translator](https://github.com/Azure/co-op-translator) GitHub Action.
branch: update-translations
base: main
labels: translation, automated-pr
delete-branch: true
add-paths: |
translations/
translated_images/
Run Co-op Translator
step, you MUST review and modify the list of language codes within the translate -l "..." -y
command to match your project’s requirements. The example list (ar de es...
) needs to be replaced or adjusted.on:
): The current trigger runs on every push to main
. For large repositories, consider adding a paths:
filter (see commented example in the YAML) to run the workflow only when relevant files (e.g., source documentation) change, saving runner minutes.commit-message
, title
, body
, branch
name, and labels
in the Create Pull Request
step if needed.AZURE_OPENAI_...
等鍵值中設定目標語言。
當 co-op-translator.yml
檔案合併至您的主分支(或設定中 on:
trigger), the workflow will automatically run whenever changes are pushed to that branch (and match the paths
過濾條件指定的分支)後,
若有產生或更新翻譯,該 Action 將自動建立包含變更的拉取請求,供您審核與合併。
免責聲明:
本文件乃使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於確保準確性,但請注意自動翻譯可能存在錯誤或不準確之處。原始文件的母語版本應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋負責。