Substitui o caminho com a entrada configPath se precisares 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 ao input sourceLocale se não estiver definido. Também encaminhado para o Tradutor como from=<locale> para que as cadeias curtas não sejam detetadas 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 C++, .NET). |
categoryId | string | Azure Custom Translator categoria — o seu knob de indústria/domínio (legal, médico, tom de marketing, etc.). Enviado como ?category=.... |
textType | "plain" | "html" | Por defeito, é plain. Usa html apenas se os valores dos teus recursos contiverem fragmentos HTML reais. |
profanityAction | "NoAction" | "Marked" | "Deleted" | Como tratar termos profanos em saídas traduzidas. |
profanityMarker | "Asterisk" | "Tag" | Só é significativo quando profanityAction é "Marked". |
allowFallback | boolean | Defina para false falhar a tradução quando o seu categoryId não tiver deployment para um local alvo, em vez de recorrer ao modelo geral. |
apiVersion | string | Tradutor versão da API REST. Por defeito, é 3.0. |
maxRetries | integer | Tentativas máximas em respostas HTTP transitórias (408, 425, 429, 500, 502, 503, 504). Por defeito, é 5. O total de chamadas HTTP por pedido é 1 + maxRetries. |
retryBackoffMs | integer | Limite (ms) em qualquer sono de recuo individual. Por defeito, é 30000. O cabeçalho Retry-After do Azure é honrado exatamente quando presente; caso contrário, é utilizado um recuo exponencial com tremor, limitado a este valor. |
protectPlaceholders | boolean | Por defeito, é true. Quando ativados, tokens como {{name}}, ${var}, {0}, {0:N2}, %s, %1$s e entidades HTML são substituídos por tokens sentinela antes da tradução e restaurados depois. Desative apenas quando a fonte contiver intencionalmente literais em forma de marcador de lugar. |
customPlaceholderPatterns | string[] | Padrões regex extra (sem delimitadores) adicionados ao conjunto de marcadores padrão, por exemplo, <<.+?>> para sintaxe personalizada dos tokens. Regexes inválidos são ignorados. |
noTranslatePatterns | string[] | Os padrões glob coincidiam com chaves ao nível do parser (JSON doted path, RESX name, PO msgid, unidade XLIFF id, chave INI/restext). As chaves correspondentes são eliminadas do pedido e passam com o seu valor de origem preservado. |
Ordem de carregamento
- A ação lê entradas explícitas do fluxo de trabalho.
- Carrega a configuração YAML a partir de
configPath. - Para cada campo partilhado, a entrada vence; caso contrário, é utilizado o valor YAML.
- Os valores fundidos são validados. Enums inválidos (por exemplo,
profanityAction: Mask) fazem com que a ação falhe rapidamente com uma mensagem clara.
Tom e indústria, em termos claros
A API Azure AI Translator v3 não tem um único botão de tom. Duas definições combinam-se para lhe dar a maior parte do mesmo controlo:
- Indústria / domínio: Usa-
categoryIdpara apontar para uma categoria Azure Custom Translator treinada com base no teu próprio corpus — legal, técnico, médico, marketing ou qualquer outra coisa. Esta é a alavanca mais forte para tom, voz de marca e vocabulário. - Texto superficial: Use o Glossário para bloquear nomes de marcas e termos de produto literalmente, e utilize
profanityActionpara eliminar termos profanes ao direcionar a localização para públicos mais jovens.