Public visé : Ce guide s’adresse aux utilisateurs internes de Microsoft ou aux équipes disposant des identifiants nécessaires pour l’application GitHub Co-op Translator préconfigurée ou pouvant créer leur propre application GitHub personnalisée.
Automatisez la traduction de la documentation de votre dépôt en toute simplicité grâce à l’Action GitHub Co-op Translator. Ce guide vous explique comment configurer l’action pour créer automatiquement des pull requests avec les traductions mises à jour dès que vos fichiers Markdown sources ou images sont modifiés.
[!IMPORTANT]
Choisir le bon guide :
Ce guide explique la configuration à l’aide d’un ID d’application GitHub et d’une clé privée. Vous aurez généralement besoin de cette méthode « Guide pour les organisations » si :
GITHUB_TOKENPermissions restreintes : Les paramètres de votre organisation ou de votre dépôt restreignent les autorisations par défaut accordées auGITHUB_TOKENstandard. Plus précisément, si leGITHUB_TOKENn’a pas les autorisationswritenécessaires (commecontents: writeoupull-requests: write), le workflow du Guide de configuration public échouera par manque d’autorisations. Utiliser une application GitHub dédiée avec des autorisations explicitement accordées permet de contourner cette limitation.Si ce qui précède ne s’applique pas à vous :
Si le
GITHUB_TOKENstandard dispose des autorisations suffisantes dans votre dépôt (c’est-à-dire que vous n’êtes pas bloqué par des restrictions organisationnelles), veuillez utiliser le Guide de configuration public utilisant GITHUB_TOKEN. Le guide public ne nécessite pas d’obtenir ou de gérer des ID d’application ou des clés privées et s’appuie uniquement sur leGITHUB_TOKENstandard et les autorisations du dépôt.
Avant de configurer l’Action GitHub, assurez-vous de disposer des identifiants nécessaires pour le service d’IA.
1. Obligatoire : Identifiants du modèle de langage IA
Vous devez disposer des identifiants pour au moins un modèle de langage pris en charge :
2. Optionnel : Identifiants Computer Vision (pour la traduction d’images)
Suivez ces étapes pour configurer l’Action GitHub Co-op Translator dans votre dépôt :
Le workflow utilise l’authentification via une application GitHub pour interagir de manière sécurisée avec votre dépôt (par exemple, créer des pull requests) en votre nom. Choisissez une option :
Rendez-vous sur la page de l’application GitHub Co-op Translator.
Sélectionnez Installer et choisissez le compte ou l’organisation où se trouve votre dépôt cible.

Choisissez Sélectionner uniquement certains dépôts et sélectionnez votre dépôt cible (par exemple, PhiCookBook). Cliquez sur Installer. Une authentification peut être demandée.

1164076..pem auprès du contact mainteneur. Traitez cette clé comme un mot de passe et gardez-la en sécurité.Vous devez ajouter les identifiants de l’application GitHub et ceux de votre service d’IA en tant que secrets chiffrés dans les paramètres de votre dépôt.
Accédez à votre dépôt GitHub cible (par exemple, PhiCookBook).
Allez dans Settings > Secrets and variables > Actions.
Sous Repository secrets, cliquez sur New repository secret pour chaque secret listé ci-dessous.

Secrets obligatoires (pour l’authentification via l’application GitHub) :
| Nom du secret | Description | Source de la valeur |
|---|---|---|
GH_APP_ID |
L’App ID de l’application GitHub (étape 1). | Paramètres de l’application GitHub |
GH_APP_PRIVATE_KEY |
Contenu complet du fichier .pem téléchargé. |
Fichier .pem (étape 1) |
Secrets pour le service d’IA (ajoutez TOUS ceux qui s’appliquent selon vos prérequis) :
| Nom du secret | Description | Source de la valeur |
|---|---|---|
AZURE_AI_SERVICE_API_KEY |
Clé pour Azure AI Service (Computer Vision) | Azure AI Foundry |
AZURE_AI_SERVICE_ENDPOINT |
Endpoint pour Azure AI Service (Computer Vision) | Azure AI Foundry |
AZURE_OPENAI_API_KEY |
Clé pour le service Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_ENDPOINT |
Endpoint pour le service Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_MODEL_NAME |
Nom de votre modèle Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME |
Nom de déploiement Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_API_VERSION |
Version d’API pour Azure OpenAI | Azure AI Foundry |
OPENAI_API_KEY |
Clé API pour OpenAI | Plateforme OpenAI |
OPENAI_ORG_ID |
ID d’organisation OpenAI | Plateforme OpenAI |
OPENAI_CHAT_MODEL_ID |
ID de modèle OpenAI spécifique | Plateforme OpenAI |
OPENAI_BASE_URL |
URL de base personnalisée pour l’API OpenAI | Plateforme OpenAI |

Enfin, créez le fichier YAML qui définit le workflow automatisé.
À la racine de votre dépôt, créez le dossier .github/workflows/ s’il n’existe pas déjà.
À l’intérieur de .github/workflows/, créez un fichier nommé co-op-translator.yml.
Collez le contenu suivant dans 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_AI_SERVICE_API_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, vous DEVEZ vérifier et modifier la liste des codes de langue dans la commande translate -l "..." -y pour qu’elle corresponde aux besoins de votre projet. La liste d’exemple (ar de es...) doit être remplacée ou ajustée.on:) : Le déclencheur actuel s’exécute à chaque push sur main. Pour les grands dépôts, envisagez d’ajouter un filtre paths: (voir l’exemple commenté dans le YAML) pour n’exécuter le workflow que lorsque les fichiers pertinents (par exemple, la documentation source) sont modifiés, afin d’économiser des minutes de runner.commit-message, le title, le body, le nom de la branch et les labels dans l’étape Create Pull Request si besoin.AZURE_OPENAI_...) avant leur expiration pour éviter l’échec des workflows.[!WARNING]
Limite de temps des runners hébergés par GitHub :
Les runners hébergés par GitHub commeubuntu-latestont une durée d’exécution maximale de 6 heures.
Pour les grands dépôts de documentation, si le processus de traduction dépasse 6 heures, le workflow sera automatiquement interrompu.
Pour éviter cela, vous pouvez :
- Utiliser un runner auto-hébergé (pas de limite de temps)
- Réduire le nombre de langues cibles par exécution
Une fois le fichier co-op-translator.yml fusionné dans votre branche principale (ou la branche spécifiée dans le déclencheur on:), le workflow s’exécutera automatiquement à chaque modification poussée sur cette branche (et correspondant au filtre paths, si configuré).
Si des traductions sont générées ou mises à jour, l’action créera automatiquement une Pull Request contenant les modifications, prête à être relue et fusionnée.
Avertissement :
Ce document a été traduit à l’aide du service de traduction IA Co-op Translator. Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatisées peuvent comporter des erreurs ou des imprécisions. Le document original dans sa langue d’origine doit être considéré comme la source faisant autorité. Pour les informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d’interprétations erronées résultant de l’utilisation de cette traduction.