Abre unha solicitude de tirada despois de cada partida
- 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: tradución de alcance por paquete
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Glosario para nomes de marcas e termos de produto
Deixa un .github/resource-translator.yml no repositorio:
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Os termos do glosario aplícanse despois tradución, polo que a saída traducida automaticamente mantén a túa marca preferida mesmo cando o modelo a cambiou por un sinónimo.
Categoría de tradutor personalizado (industria / dominio)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Adestra unha categoría de Azure Custom Translator nun corpus que capture o vocabulario e ton da túa industria (legal, médico, marketing, enxeñaría interna, etc.) e aproba o seu ID a través de categoryId. Esta é a palanca de ton máis potente que ofrece Azure.
Control de ton + respaldo 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 Combina un categoryId de tradutor personalizado con profanityAction e allowFallback: false para garantir unha voz consistente e falla o fluxo de traballo se a categoría escollida non ten un despregamento para unha das túas localizacións obxectivo.
Ensaio en seco antes de activar o fluxo de traballo
with: dryRun: true failOnError: false A acción segue emitindo resultados resumo e un resumo de pasos, pero non se escriben ficheiros. Combínao con failOnError: false para destacar cada problema como advertencia mentres iteras.