Otwieraj pull request po każdym uruchomieniu
- 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: translacja zakresu na pakiet
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Słowniczek nazw marek i terminów produktów
Wrzuć .github/resource-translator.yml do repozytorium:
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Terminy słownikowe są stosowane Po tłumaczeniu, więc maszynowo tłumaczony wynik zachowuje preferowaną markę nawet wtedy, gdy model zamienił ją na synonim.
Kategoria niestandardowych tłumaczy (branża / domena)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Przeszkol kategorię Azure Custom Translator na korpusie, który obejmuje język i ton Twojej branży (prawnie, medyczne, marketingowe, inżynieria wewnętrzna itd.) i przekaż jej ID przez categoryId. To najsilniejsza dźwignia tonu, jaką oferuje Azure.
Kontrola tonu + ścisły system awaryjne
# .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 Połącz categoryId niestandardowego tłumacza z profanityAction i allowFallback: false, aby wymusić spójny głos i nie wykonać workflow, jeśli wybrana kategoria nie ma wdrożenia dla jednej z docelowych lokalizacji.
Próba na sucho przed włączeniem workflow
with: dryRun: true failOnError: false Akcja nadal generuje podsumowania i podsumowanie kroków, ale nie są zapisywane żadne pliki. Połącz z failOnError: false, aby wyłaniać każdy problem jako ostrzeżenie podczas iteracji.