Substitua o caminho com a entrada configPath se precisar de uma localização não padrão.
Esquema
# .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.*"Referência de campo
| Campo | Tipo | Notas |
|---|---|---|
sourceLocale | string | Volta para a entrada sourceLocale se não estiver ativada. Também encaminhado para o Tradutor como from=<locale> para que cadeias curtas não sejam detectadas automaticamente. |
toLocales | string[] | Ou um array ou uma cadeia separada por vírgulas. |
include / exclude | string[] | Padrões de globos avaliados contra caminhos absolutos e relativos ao espaço de trabalho. |
glossary | map<string,string> | Substituições de termos pós-tradução. Consciente da fronteira de palavras (trata de C++, .NET). |
categoryId | string | Azure Custom Translator categoria — seu knob de indústria/domínio (jurídico, médico, tom de marketing, etc.). Enviado como ?category=.... |
textType | "plain" | "html" | O padrão é plain. Use html apenas se seus valores de recurso conterem fragmentos HTML reais. |
profanityAction | "NoAction" | "Marked" | "Deleted" | Como tratar termos profanos em resultados traduzidos. |
profanityMarker | "Asterisk" | "Tag" | Só significa quando profanityAction é "Marked". |
allowFallback | boolean | Defina para false falhar na tradução quando seu categoryId não tiver implantação para um local de destino, em vez de voltar ao modelo geral. |
apiVersion | string | Versão da API REST do tradutor. O padrão é 3.0. |
maxRetries | integer | Máximo de tentativas em respostas HTTP transitórias (408, 425, 429, 500, 502, 503, 504). O padrão é 5. O total de chamadas HTTP por requisição é 1 + maxRetries. |
retryBackoffMs | integer | Limite (ms) em qualquer sono de recuo individual. O padrão é 30000. O cabeçalho Retry-After do Azure é honrado exatamente quando presente; caso contrário, é usado um backoff exponencial com jitter, limitado a esse valor. |
protectPlaceholders | boolean | O padrão é true. Quando ativados, tokens como {{name}}, ${var}, {0}, {0:N2}, %s, %1$s e HTML são substituídos por tokens sentinela antes da tradução e restaurados depois. Desative apenas quando a fonte intencionalmente contiver literais em forma de marcador de lugar. |
customPlaceholderPatterns | string[] | Padrões regex extras (sem delimitadores) adicionados ao conjunto padrão de marcadores de lugar, por exemplo, <<.+?>> para sintaxe personalizada de tokens. Regexes inválidos são ignorados. |
noTranslatePatterns | string[] | Padrões glob combinavam com chaves de nível de parser (JSON ponted path, RESX name, PO msgid, unidade XLIFF id, chave INI/restext). Chaves correspondentes são retiradas da solicitação e passam com seu valor de origem preservado. |
Ordem de carregamento
- A ação lê entradas explícitas do fluxo de trabalho.
- Ele carrega a configuração YAML a partir de
configPath. - Para cada campo compartilhado, a entrada vence; caso contrário, o valor YAML é utilizado.
- Os valores fundidos são validados. Enums inválidos (por exemplo,
profanityAction: Mask) fazem a ação falhar rapidamente com uma mensagem clara.
Tom e indústria, em termos claros
A API do Azure AI Translator v3 não possui um único botão de tom. Duas configurações combinadas oferecem a maior parte do mesmo controle:
- Indústria / domínio: use
categoryIdpara apontar uma categoria Azure Custom Translator treinada com seu próprio corpus — jurídico, técnico, médico, de marketing ou qualquer outra coisa. Essa é a alavanca mais forte para timbre, voz de marca e vocabulário. - Texto superficial: Use o Glossário para bloquear nomes de marcas e termos de produtos literalmente, e use
profanityActionpara eliminar termos profanes ao direcionar a localização para públicos mais jovens.