Abra um pull request após cada execução
- id: translate uses: IEvangelist/resource-translator@v3 with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} region: ${{ secrets.TRANSLATOR_REGION }}
- if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: branch: machine-translation title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} labels: localizationMonorepos: translação de escopo por pacote
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Glossário para nomes de marcas e termos de produtos
Coloca um .github/resource-translator.yml no repositório:
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Os termos do glossário são aplicados depois tradução, por isso a saída traduzida automaticamente mantém a sua marca preferida mesmo quando o modelo a trocou por um sinónimo.
Categoria de tradutores personalizados (indústria / domínio)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Treina uma categoria de Custom Translator Azure num corpus que capte o vocabulário e o tom da tua indústria (jurídico, médico, marketing, engenharia interna, etc.) e aprova o seu ID via categoryId. Esta é a alavanca de tom mais forte que o Azure oferece.
Controlo de tom + recuo estrito
# .github/resource-translator.yml# Industry / domain — choose your tone via a Custom Translator categorycategoryId: legal-en
# Treat profanity strictly for content aimed at younger audiencesprofanityAction: MarkedprofanityMarker: Tag
# Fail the run rather than silently fall back to the general modelallowFallback: false Combine um categoryId de Tradutor Personalizado com profanityAction e allowFallback: false para garantir uma voz consistente e falhe o fluxo de trabalho se a categoria escolhida não tiver uma implementação para um dos seus locais-alvo.
Teste a seco antes de ativar o fluxo de trabalho
with: dryRun: true failOnError: false A ação continua a emitir resultados resumidos e um resumo de passos, mas não são escritos ficheiros. Combina com failOnError: false para destacar cada problema como aviso enquanto iteras.