Deschide o pull request după fiecare rundă
- 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: traducerea scopului pe pachet
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Glosar pentru denumirile de mărci și termenii produselor
Pune un .github/resource-translator.yml în depozit:
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Termenii din glosar sunt aplicați după traducere, astfel încât rezultatul tradus automat păstrează brandingul preferat chiar și atunci când modelul l-a înlocuit cu un sinonim.
Categorie de traducător personalizat (industrie / domeniu)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Antrenează o categorie Azure Custom Translator pe un corpus care surprinde vocabularul și tonul tău din industrie (juridic, medical, marketing, inginerie internă etc.) și trece ID-ul prin categoryId. Aceasta este cea mai puternică pârghie de ton pe care o oferă Azure.
Controlul tonului + rezervă 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 Combină un categoryId Custom Translator cu profanityAction și allowFallback: false pentru a impune o voce consecventă și eșuează fluxul de lucru dacă categoria aleasă nu are o implementare pentru una dintre locațiile țintă.
Verifică înainte de a porni fluxul de lucru
with: dryRun: true failOnError: false Acțiunea emite în continuare rezultate sumare și un rezumat al pașilor, dar nu se scriu fișiere. Combină cu failOnError: false pentru a evidenția fiecare problemă ca avertisment în timp ce iterezi.