対象読者: 本ガイドは、Microsoft社内ユーザーまたは事前構築済みのCo-op Translator GitHub Appの必要な認証情報にアクセスできるチーム、あるいは独自のカスタムGitHub Appを作成可能なチームを対象としています。
Co-op Translator GitHub Actionを使って、リポジトリのドキュメント翻訳を自動化しましょう。このガイドでは、ソースのMarkdownファイルや画像が変更されるたびに、更新された翻訳を含むプルリクエストを自動作成するための設定方法を説明します。
[!IMPORTANT]
適切なガイドの選択について:
本ガイドは、GitHub App IDとプライベートキーを使った設定方法を詳述しています。以下のような場合は、この「組織向けガイド」の手順が必要です。
GITHUB_TOKEN
の権限が制限されている場合: 組織やリポジトリの設定で、標準のGITHUB_TOKEN
に付与されるデフォルトの権限が制限されている場合、特にGITHUB_TOKEN
に必要なwrite
権限(contents: write
やpull-requests: write
など)が付与されていないと、Public Setup Guideのワークフローは権限不足で失敗します。専用のGitHub Appを明示的に権限付与して使うことで、この制限を回避できます。上記に該当しない場合:
標準の
GITHUB_TOKEN
がリポジトリで十分な権限を持っている(組織の制限でブロックされていない)場合は、GITHUB_TOKENを使った公開セットアップガイド をご利用ください。公開ガイドはApp IDやプライベートキーの取得・管理を必要とせず、標準のGITHUB_TOKEN
とリポジトリ権限のみで動作します。
GitHub Actionを設定する前に、必要なAIサービスの認証情報を準備してください。
1. 必須: AI言語モデルの認証情報
少なくとも1つの対応言語モデルの認証情報が必要です。
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
ファイルがmainブランチ(またはon:
trigger), the workflow will automatically run whenever changes are pushed to that branch (and match the paths
フィルターで指定したブランチ)にマージされると、
翻訳が生成または更新された場合、アクションは変更内容を含むプルリクエストを自動作成します。レビューとマージの準備が整います。
免責事項:
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性には努めておりますが、自動翻訳には誤りや不正確な箇所が含まれる可能性があることをご了承ください。原文の言語による文書が正式な情報源とみなされます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用により生じたいかなる誤解や誤訳についても、当方は責任を負いかねます。