Suprascrie calea cu intrarea configPath dacă ai nevoie de o locație non-implicită.
Schema
# .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.*"Referință de teren
| Teren | Tip | Note |
|---|---|---|
sourceLocale | string | Se întoarce la intrarea sourceLocale dacă nu este setată. De asemenea, este redirecționat către Translator ca from=<locale> ca șirurile scurte să nu fie detectate automat. |
toLocales | string[] | Fie un tablou, fie un șir separat de virgule. |
include / exclude | string[] | Modele glob evaluate în raport cu trasee absolute și relative cu spațiul de lucru. |
glossary | map<string,string> | Suprascrieri de termeni post-traducere. Conștient de limitele cuvintelor (gestionează C++, .NET). |
categoryId | string | Azure Custom Translator categorie — butonul tău de industrie/domeniu (juridic, medical, ton de marketing etc.). Trimis ca ?category=.... |
textType | "plain" | "html" | Implicit este plain. Folosește html doar dacă valorile resurselor tale conțin fragmente HTML reale. |
profanityAction | "NoAction" | "Marked" | "Deleted" | Cum să tratezi termenii profani în rezultatele traduse. |
profanityMarker | "Asterisk" | "Tag" | Are sens doar când profanityAction este "Marked". |
allowFallback | boolean | Setat pe false să eșueze traducerea când categoryId tău nu are implementare pentru o locație țintă, în loc să revină la modelul general. |
apiVersion | string | Versiunea API REST a traducătorului. Implicit este 3.0. |
maxRetries | integer | Numărul maxim de încercări de reîncercare pentru răspunsurile HTTP tranzitorii (408, 425, 429, 500, 502, 503, 504). Implicit este 5. Numărul total de apeluri HTTP pe cerere este 1 + maxRetries. |
retryBackoffMs | integer | Limită (ms) pentru orice somn cu retragere individuală. Implicit este 30000. Antetul Retry-After Azure este onorat exact când este prezent; altfel, se folosește un backoff exponențial jittered, limitat la această valoare. |
protectPlaceholders | boolean | Implicit este true. Când sunt activate, tokenuri precum {{name}}, ${var}, {0}, {0:N2}, %s, %1$s și entități HTML sunt înlocuite cu token-uri sentinel înainte de traducere și restaurate ulterior. Dezactivează doar atunci când sursa conține intenționat literale în formă de placeholder. |
customPlaceholderPatterns | string[] | Modele regex suplimentare (fără delimitatoare) adăugate setului implicit de placeholder, de exemplu <<.+?>> pentru sintaxa tokenului personalizată. Regexurile invalide sunt ignorate. |
noTranslatePatterns | string[] | Modelele Glob se potriveau cu cheile la nivel de parser (JSON doted path, RESX name, PO msgid, id unității XLIFF, cheia INI/restext). Cheile corespunzătoare sunt eliminate din cerere și trec cu valoarea sursă păstrată. |
Ordinea de încărcare
- Acțiunea citește intrări explicite din fluxul de lucru.
- Încarcă configurația YAML din
configPath. - Pentru fiecare câmp partajat, intrarea câștigă; altfel se folosește valoarea YAML.
- Valorile combinate sunt validate. Enum-urile invalide (de exemplu
profanityAction: Mask) cauzează eșecul rapid al acțiunii cu un mesaj clar.
Tonul și industria, în termeni clari
API-ul Azure AI Translator v3 nu are un singur buton de ton. Două setări combinate îți oferă majoritatea controlului:
- Industrie / domeniu: folosește
categoryIdpentru a indica o categorie Azure Custom Translator antrenată pe propriul tău corpus — juridic, tehnic, medical, de marketing sau orice altceva. Aceasta este cea mai puternică pârghie pentru ton, vocea brandului și vocabular. - Textul de la suprafață: Folosește Glosar pentru a bloca numele de mărci și termenii de produs cuvânt cu cuvânt și folosește
profanityActionpentru a elimina termenii vulgari atunci când vizezi localizarea către publicul mai tânăr.