Відкривайте pull request після кожного запуску
- 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: localizationМонорепо: трансляція області для кожного пакета
with: sourceLocale: en include: | apps/web/**/*.en.resx packages/shared/**/*.en.json exclude: | **/dist/** **/__tests__/**Глосарій назв брендів і термінів продукції
Додайте .github/resource-translator.yml у репозиторій:
glossary: Acme: Contoso Octocat: Octocat ".NET": ".NET" "C++": "C++"Терміни глосарію застосовуються після перекладі, тому машинний переклад виводи зберігає ваш улюблений бренд, навіть якщо модель замінила його на синонім.
Категорія кастомних перекладачів (галузь / домен)
with: sourceLocale: en subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} categoryId: 1234abcd-5678-90ef-... Навчіть категорію Azure Custom Translator на корпусі, який охоплює вашу галузеву лексику та тон (юридичний, медичний, маркетинг, внутрішня інженерія тощо) і пройдіть його ID через categoryId. Це найсильніший важіль тону, який пропонує Azure.
Регулятор тону + суворий запасний варіант
# .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 Поєднайте Custom Translator categoryId з profanityAction і allowFallback: false, щоб забезпечити послідовний голос, і проваліть робочий процес, якщо обрана категорія не має розгортання для однієї з цільових локацій.
Пробний запуск перед тим, як увімкнути робочий процес
with: dryRun: true failOnError: false Дія все ще видає підсумкові результати та підсумок кроків, але файли не записуються. Поєднуйте failOnError: false, щоб кожна проблема виявлялася як попередження під час ітерацій.