Público-alvo: Este guia destina-se a utilizadores internos da Microsoft ou equipas que tenham acesso às credenciais necessárias para a App GitHub Co-op Translator pré-configurada ou que possam criar a sua própria App GitHub personalizada.
Automatize a tradução da documentação do seu repositório de forma simples utilizando a GitHub Action Co-op Translator. Este guia explica como configurar a action para criar automaticamente pull requests com traduções atualizadas sempre que os seus ficheiros Markdown de origem ou imagens forem alterados.
[!IMPORTANT]
Escolher o Guia Certo:
Este guia detalha a configuração utilizando um GitHub App ID e uma Chave Privada. Normalmente, precisa deste método “Guia para Organizações” se:
GITHUB_TOKENcom Permissões Restritas: As definições da sua organização ou repositório restringem as permissões padrão concedidas aoGITHUB_TOKEN. Especificamente, se oGITHUB_TOKENnão tiver as permissões dewritenecessárias (comocontents: writeoupull-requests: write), o workflow do Guia de Configuração Pública irá falhar devido a permissões insuficientes. Utilizar uma App GitHub dedicada com permissões explicitamente atribuídas contorna esta limitação.Se o acima não se aplicar a si:
Se o
GITHUB_TOKENpadrão tiver permissões suficientes no seu repositório (ou seja, não está bloqueado por restrições organizacionais), utilize o Guia de Configuração Pública com GITHUB_TOKEN. O guia público não requer obtenção ou gestão de App IDs ou Chaves Privadas e baseia-se apenas noGITHUB_TOKENpadrão e nas permissões do repositório.
Antes de configurar a GitHub Action, certifique-se de que tem as credenciais do serviço de IA necessárias.
1. Obrigatório: Credenciais do Modelo de Linguagem de IA Precisa de credenciais para pelo menos um dos Modelos de Linguagem suportados:
2. Opcional: Credenciais de Visão Computacional (para Tradução de Imagens)
Siga estes passos para configurar a GitHub Action Co-op Translator no seu repositório:
O workflow utiliza autenticação via GitHub App para interagir de forma segura com o seu repositório (por exemplo, criar pull requests) em seu nome. Escolha uma das opções:
Aceda à página da App GitHub Co-op Translator.
Selecione Install e escolha a conta ou organização onde está o seu repositório de destino.

Escolha Only select repositories e selecione o seu repositório de destino (por exemplo, PhiCookBook). Clique em Install. Poderá ser-lhe pedido para autenticar.

1164076..pem junto do contacto responsável. Trate esta chave como uma palavra-passe e mantenha-a segura.Deve adicionar as credenciais da GitHub App e as credenciais do serviço de IA como segredos encriptados nas definições do seu repositório.
Aceda ao seu repositório GitHub de destino (por exemplo, PhiCookBook).
Vá a Settings > Secrets and variables > Actions.
Em Repository secrets, clique em New repository secret para cada segredo listado abaixo.

Segredos Obrigatórios (para Autenticação da GitHub App):
| Nome do Segredo | Descrição | Fonte do Valor |
|---|---|---|
GH_APP_ID |
O App ID da GitHub App (do Passo 1). | Definições da GitHub App |
GH_APP_PRIVATE_KEY |
O conteúdo completo do ficheiro .pem obtido. |
Ficheiro .pem (do Passo 1) |
Segredos do Serviço de IA (Adicione TODOS os que se aplicam consoante os seus Pré-requisitos):
| Nome do Segredo | Descrição | Fonte do Valor |
|---|---|---|
AZURE_AI_SERVICE_API_KEY |
Chave para Azure AI Service (Computer Vision) | Azure AI Foundry |
AZURE_AI_SERVICE_ENDPOINT |
Endpoint para Azure AI Service (Computer Vision) | Azure AI Foundry |
AZURE_OPENAI_API_KEY |
Chave para o serviço Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_ENDPOINT |
Endpoint para o serviço Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_MODEL_NAME |
Nome do seu Modelo Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME |
Nome do Deployment Azure OpenAI | Azure AI Foundry |
AZURE_OPENAI_API_VERSION |
Versão da API para Azure OpenAI | Azure AI Foundry |
OPENAI_API_KEY |
Chave API para OpenAI | OpenAI Platform |
OPENAI_ORG_ID |
ID da Organização OpenAI | OpenAI Platform |
OPENAI_CHAT_MODEL_ID |
ID específico do modelo OpenAI | OpenAI Platform |
OPENAI_BASE_URL |
Base URL personalizada da API OpenAI | OpenAI Platform |

Por fim, crie o ficheiro YAML que define o workflow automatizado.
No diretório raiz do seu repositório, crie o diretório .github/workflows/ se ainda não existir.
Dentro de .github/workflows/, crie um ficheiro chamado co-op-translator.yml.
Cole o seguinte conteúdo em 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, DEVE rever e modificar a lista de códigos de línguas no comando translate -l "..." -y para corresponder aos requisitos do seu projeto. A lista de exemplo (ar de es...) deve ser substituída ou ajustada.on:): O trigger atual executa em cada push para main. Para repositórios grandes, considere adicionar um filtro paths: (veja o exemplo comentado no YAML) para executar o workflow apenas quando ficheiros relevantes (por exemplo, documentação de origem) forem alterados, poupando minutos de execução.commit-message, title, body, nome da branch e labels no passo Create Pull Request se necessário.AZURE_OPENAI_...) antes de expirarem para evitar falhas no workflow.[!WARNING]
Limite de Tempo dos Runners Hospedados pelo GitHub:
Os runners hospedados pelo GitHub, comoubuntu-latest, têm um limite máximo de execução de 6 horas.
Para repositórios de documentação grandes, se o processo de tradução exceder as 6 horas, o workflow será automaticamente terminado.
Para evitar isto, considere:
- Utilizar um runner self-hosted (sem limite de tempo)
- Reduzir o número de línguas de destino por execução
Assim que o ficheiro co-op-translator.yml for integrado na sua branch principal (ou na branch especificada no trigger on:), o workflow será executado automaticamente sempre que forem feitas alterações nessa branch (e corresponder ao filtro paths, se configurado).
Se forem geradas ou atualizadas traduções, a action irá criar automaticamente um Pull Request com as alterações, pronto para revisão e integração.
Aviso Legal: Este documento foi traduzido utilizando o serviço de tradução por IA Co-op Translator. Embora nos esforcemos pela precisão, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original, no seu idioma nativo, deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes do uso desta tradução.