Ouvrez une pull request après chaque partie
- 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 : traduction de portée par package
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Glossaire des noms de marques et termes de produits
Déposez un .github/resource-translator.yml dans le dépôt :
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Les termes du glossaire sont appliqués après traduction, donc la traduction automatique conserve votre image de marque préférée même lorsque le modèle l’a remplacée par un synonyme.
Catégorie de traducteur personnalisé (secteur / domaine)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Formez une catégorie Azure Custom Translator sur un corpus qui capture le vocabulaire et le ton de votre secteur (juridique, médical, marketing, ingénierie interne, etc.) et faites passer son ID via categoryId. C’est le levier de tonalité le plus puissant qu’Azure offre.
Contrôle de tonalité + plan de repli strict
# .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 Combinez un categoryId de traducteur personnalisé avec profanityAction et allowFallback: false pour imposer une voix cohérente et échouez au flux de travail si la catégorie choisie n’a pas de déploiement pour l’un de vos lieux cibles.
Répétition générale avant d’activer le workflow
with: dryRun: true failOnError: false L’action émet toujours des sorties résumées et un sommaire d’étape, mais aucun fichier n’est écrit. Combinez-le avec failOnError: false pour mettre chaque problème en avant comme avertissement pendant que vous itérerez.