Переопределите путь с помощью configPath входа, если нужна нестандартная локация.
Схема
# .github/resource-translator.ymlsourceLocale: entoLocales: - fr - de - esinclude: - "src/**/*.en.json" - "apps/**/*.en.resx"exclude: - "**/__tests__/**"glossary: Acme: Contoso Octocat: Octocat # keep brand names verbatim
# Domain / industry — uses an Azure Custom Translator category trained on# your tone and vocabulary. Leave unset for the general model.categoryId: my-custom-translator-category
# Translator request shape — most users can ignore these.textType: plain # plain | htmlprofanityAction: NoAction # NoAction | Marked | DeletedprofanityMarker: Asterisk # Asterisk | Tag (only when profanityAction == Marked)allowFallback: true # false fails when the categoryId has no deployment
apiVersion: "3.0"
# Resilience — Translator returns 429 under load. Defaults are usually# fine; tune only if your runs are large enough to hit them.maxRetries: 5retryBackoffMs: 30000 # cap on any single backoff sleep (ms)
# Placeholder protection. ON by default — wraps tokens like {{name}},# {0}, %s, ${var} into sentinels before translation and restores them# on the way back. Set false only when source intentionally contains# placeholder-shaped literals.protectPlaceholders: truecustomPlaceholderPatterns: - "<<.+?>>" # any extra token syntax you use
# Per-key opt-out. Keys matching any glob are dropped from the request# and pass through with the source value preserved.noTranslatePatterns: - "errors.code.*" - "brands.*"Полевые ссылки
| Поле | Тип | Примечания |
|---|---|---|
sourceLocale | string | Если не настроено, возвращается к sourceLocale входу. Также пересылается в Translator как from=<locale>, чтобы короткие строки не определялись автоматически. |
toLocales | string[] | Либо массив, либо строка, разделённая запятой. |
include / exclude | string[] | Шаровые паттерны оценивались по абсолютным и относительным к рабочему пространству траекториям. |
glossary | map<string,string> | Отмены терминов после перевода. Осознание границ слов (обрабатывает C++, .NET). |
categoryId | string | Azure Custom Translator категория — ваш регулятор отрасли/домена (юридический, медицинский, маркетинговый тон и т.д.). Отправлен как ?category=.... |
textType | "plain" | "html" | По умолчанию plain. Используйте html только если ваши значения ресурсов содержат реальные HTML-фрагменты. |
profanityAction | "NoAction" | "Marked" | "Deleted" | Как обращаться с нецензурными выражениями в переводе. |
profanityMarker | "Asterisk" | "Tag" | Это имеет смысл только тогда, когда profanityAction "Marked". |
allowFallback | boolean | Установите false для неудачи перевода, когда у вашего categoryId нет развертывания для целевого локаля, вместо того чтобы возвращаться к общей модели. |
apiVersion | string | Версия REST API для транслятора. По умолчанию 3.0. |
maxRetries | integer | Максимальные попытки повторных попыток временных HTTP-ответов (408, 425, 429, 500, 502, 503, 504). По умолчанию 5. Общее количество HTTP-вызовов на запрос составляет 1 + maxRetries. |
retryBackoffMs | integer | Лимит (ms) на любой единственный отступной сон. По умолчанию 30000. Заголовок Azure Retry-After отмечен именно тогда, когда он присутствует; в противном случае используется экспоненциальное откат, ограниченное этим значением. |
protectPlaceholders | boolean | По умолчанию true. При включении токены, такие как {{name}}, ${var}, {0}, {0:N2}, %s, %1$s и HTML-сущности, заменяются на токены Sentinel до перевода и восстанавливаются после. Отключить только если исходный код намеренно содержит временные литералы. |
customPlaceholderPatterns | string[] | Дополнительные шаблоны regex (без разделителей) добавлены в стандартный набор заполнений, например, <<.+?>> для синтаксиса пользовательских токенов. Некорректные регулярные выражения игнорируются. |
noTranslatePatterns | string[] | Шаблоны Glob совпадали с ключами уровня парсера (JSON пунктирный путь, RESX name, PO msgid, XLIFF блок id, ключ INI/restext). Соответствующие ключи удаляются из запроса и проходят с сохранением исходного значения. |
Порядок загрузки
- Действие считывает явные вводные данные из рабочего процесса.
- Он загружает конфигурацию YAML из
configPath. - Для каждого общего поля побеждает вход; в противном случае используется значение YAML.
- Объединённые значения валидируются. Недействительные enums (например,
profanityAction: Mask) приводят к быстрому провалу действия при чётком сообщении.
Тон и индустрия, если говорить простыми словами
API Azure AI Translator v3 не имеет одной ручки тонального сигнала. Два режима объединяются, чтобы получить почти одинаковый элемент управления:
- Отрасль / домен: Используйте
categoryId, чтобы указать на категорию Azure Custom Translator, обученную на вашем собственном корпусе — юридических, технических, медицинских, маркетинговых или любых других областях. Это самый сильный рычаг для тона, брендового голоса и словарного запаса. - Поверхностный текст: Используйте Глоссарий, чтобы дословно зафиксировать бренды и термины продуктов, а также используйте
profanityActionдля удаления нецензурных терминов при таргетировании локализации для молодой аудитории.