Harnesses

The solutions built around the models: prompts, glossaries, post-editing and multi-step workflows, and what each adds.

Takeaways for , , , and

Takeaway 1

General translation quality improves mainly in three-step solutions (translation + LQA + repair), while most translations meet the other Standard requirements in two-step solutions (translation + post-edit) already.

In a two-step solution, we post-edit the one-step translation with an LLM, using a prompt for the requirement it falls short on, and repair tags and formatting by code. In a three-step solution, we assess the translation with Intento LQA and send it with the findings to an LLM for a repair. In most solutions, we post-edit or repair with the model we translated the text with. We implement these two-step and three-step workflows in Intento Language Hub, including the transfer of Intento LQA findings to the repair step.

On the same solutions, weighted errors fall from 36 per 1,000 words in the one-step solutions to 28 in the two-step solutions and to 16 in the three-step solutions. General translation quality comes mostly from the pre-training of a model, and we see little gain from a second pass without a list of the errors.

Where only tone of voice or terminology fell short, 90% of the two-step solutions met every requirement, and where only tags or formatting fell short, ~80% did, with tags and formatting repaired by code. Three-step solutions meet these requirements about as often. We assess every two-step and three-step solution again, without the findings in the prompts of the LQA judges.

Requirements missed per 1,000 words in one-step, two-step and three-step solutionsOne-step solutionsTwo-step solutions (translation + post-edit)Three-step solutions (translation + LQA + repair)010203040General translation quality, One-step solutions: 36.136.1General translation quality, Two-step solutions (translation + post-edit): 27.527.5General translation quality, Three-step solutions (translation + LQA + repair): 15.815.8General translation qualityTone of voice, One-step solutions: 0.70.7Tone of voice, Two-step solutions (translation + post-edit): 0.30.3Tone of voice, Three-step solutions (translation + LQA + repair): 00Tone of voiceTag handling, One-step solutions: 1.31.3Tag handling, Two-step solutions (translation + post-edit): 0.70.7Tag handling, Three-step solutions (translation + LQA + repair): 00Tag handlingFormatting, One-step solutions: 0.30.3Formatting, Two-step solutions (translation + post-edit): 00Formatting, Three-step solutions (translation + LQA + repair): 00FormattingMedian over the same solutions, among the one-step solutions that missed the requirement. General translation quality: errorsweighted by severity (minor 1, major 5, critical 10). Tone of voice: sentences in the wrong register. Tag handling: missing or extratags. Formatting: failed checks. Terminology is left out, with too few solutions.
Requirements missed per 1,000 words in one-step, two-step and three-step solutions
Takeaway 2

MT engines miss general translation quality, tag handling and formatting in nearly every language, off the shelf or adjusted with a glossary and formality.

A solution meets general translation quality with no critical error, at most three major errors and at most 20 weighted errors per 1,000 words. We adjust an MT engine with a glossary and a formality setting through its API, and an LLM with tone of voice, terminology and other context in the request.

The translated JSON document is valid in 28% of the MT engine solutions. With a glossary in the request, 27% of the adjusted MT engine solutions in the 16 languages with a glossary meet the terminology requirement, against 53% of the adjusted LLM solutions.

Share of one-step solutions meeting each requirementMT engines, off the shelfMT engines, adjustedLLMs, adjusted0%20%40%60%80%100%General translation quality, MT engines, off the shelf: 0%0%General translation quality, MT engines, adjusted: 5%5%General translation quality, LLMs, adjusted: 18%18%General translationqualityTone of voice, MT engines, off the shelf: 56%56%Tone of voice, MT engines, adjusted: 66%66%Tone of voice, LLMs, adjusted: 89%89%Tone of voiceTerminology, MT engines, off the shelf: 0%0%Terminology, MT engines, adjusted: 27%27%Terminology, LLMs, adjusted: 53%53%TerminologyTag handling, MT engines, off the shelf: 1%1%Tag handling, MT engines, adjusted: 0%0%Tag handling, LLMs, adjusted: 57%57%Tag handlingFormatting, MT engines, off the shelf: 1%1%Formatting, MT engines, adjusted: 5%5%Formatting, LLMs, adjusted: 78%78%FormattingOne-step solutions with a conclusive LQA result. Adjusted MT engines: a glossary and a formality setting through the API. AdjustedLLMs: tone of voice, terminology and other context in the request. Terminology only in the 16 languages with a glossary.
Share of one-step solutions meeting each requirement
Takeaway 3

~82% of the three-step solutions (translation + LQA + repair) still meet every requirement met by the one-step solution, and the others most often miss terminology or tone of voice.

A solution meets general translation quality with no critical error, at most three major errors and at most 20 weighted errors per 1,000 words. Of the three-step solutions that meet it but not every other requirement, 25% still meet every requirement met by the one-step solution.

In the languages with a glossary, 58% of the three-step solutions meet the terminology requirement, against 88% of the one-step solutions they are built on. Most of the terms missing in the three-step solutions are paraphrased. ~5% of the three-step solutions have a critical error the one-step solution did not have. We check every requirement again in every three-step solution.

Takeaway 4

Gender-neutral versions of the best solutions lose less accuracy with the gender-neutrality agent involved at all stages of the solution, including post-editing, LQA and repair, than with the agent involved in the translation step only.

Rewording for gender neutrality changes the meaning of some sentences, and Intento LQA counts those changes as errors. With the gender-neutrality agent involved in the translation step only, 39% of the gender-neutral versions still met every Standard requirement. With the agent involved at all stages of the solution, including post-editing, LQA and repair, 85% did.

Of the gender-neutral versions that still fell short, 16% met the Advanced requirements as two-step solutions (translation + post-edit), and 46% of the rest as three-step solutions (translation + LQA + repair), with the gender findings.

We use Intento Language Hub to coordinate the gender-neutrality agent with translation, post-editing, LQA and repair, using the same language-specific gender rule throughout.

Gender-neutral versions still meeting every Standard requirementStill meet every Standard requirementFall short020406080100Agent in the translation step onlyAgent in the translation step only: Still meet every Standard requirement 39 (39.0%)Agent in the translation step only: Fall short 61 (61.0%)39%Agent at all stages, including post-editing, LQA and repairAgent at all stages, including post-editing, LQA and repair: Still meet every Standard requirement 85 (85.0%)Agent at all stages, including post-editing, LQA and repair: Fall short 15 (15.0%)85%% of the gender-neutral versionsPercent of the first gender-neutral versions of solutions that met everyStandard requirement before.
Gender-neutral versions still meeting every Standard requirement
Takeaway 5

"Formal" means something different in every language, so each of the 100 languages has its own tone instruction.

"Be formal" is Sie in German and 敬語 in Japanese. Every instruction opens with the same sentence about a formal register, and a line for the language follows it, naming the forms to use. We seeded the lines by script and edited them by hand, changing 20 of them: Pan/Pani became Państwo in Polish, and we removed você from the European Portuguese line.

Intento LQA checks tone of voice against a list of formal and informal forms of address for each language. In 17 languages, including Danish, Norwegian, Swedish and Icelandic, the singular address (du, þú) is the standard form in formal writing, and Intento LQA accepts it as formal.

Takeaway 6

Each language has one gender-neutrality strategy, chosen from the options that language offers, and in 40 of the 100 languages it is not to add a gender the source does not specify.

One instruction cannot cover gender neutrality, because the options differ by language and by what speakers accept. The instruction for each language carries one chosen strategy, and the alternatives stay on record. For German we ask for neutral nouns and substantivized participles and ban the typographic forms: Gendersternchen, Doppelpunkt, Binnen-I.

In 41 of the 82 languages we could assess, a longer instruction scored better: it also holds a note on where gender shows up in that language and an example of a neutral and a gendered translation. Intento LQA checks the output against the same strategy. "Be gender-neutral" alone would leave the standard undefined.

Gender-neutrality strategy by languageAfrikaans (af): neutral rephrasingafAfrikaansAlbanian (sq): neutral rephrasingsqAlbanianAmharic (am): neutral rephrasingamAmharicArabic (MSA) (ar): neutral rephrasingarArabic (MS…Belarusian (be): neutral rephrasingbeBelarusianBosnian (bs): neutral rephrasingbsBosnianBulgarian (bg): neutral rephrasingbgBulgarianCatalan (ca): neutral rephrasingcaCatalanChinese Simplified (zh): neutral rephrasingzhChinese Si…Chinese Traditional (zh-hant): neutral rephrasingzh-hantChinese Tr…Croatian (hr): neutral rephrasinghrCroatianCzech (cs): neutral rephrasingcsCzechDanish (da): neutral rephrasingdaDanishDutch (nl): neutral rephrasingnlDutchFrench (fr): neutral rephrasingfrFrenchFrisian (fy): neutral rephrasingfyFrisianGalician (gl): neutral rephrasingglGalicianGerman (de): neutral rephrasingdeGermanGreek (el): neutral rephrasingelGreekGujarati (gu): neutral rephrasingguGujaratiHausa (ha): neutral rephrasinghaHausaHebrew (he): neutral rephrasingheHebrewHindi (hi): neutral rephrasinghiHindiIcelandic (is): neutral rephrasingisIcelandicIrish (ga): neutral rephrasinggaIrishItalian (it): neutral rephrasingitItalianJapanese (ja): neutral rephrasingjaJapaneseKannada (kn): neutral rephrasingknKannadaKorean (ko): neutral rephrasingkoKoreanKurdish (Kurmanji) (ku): neutral rephrasingkuKurdish (K…Latvian (lv): neutral rephrasinglvLatvianLithuanian (lt): neutral rephrasingltLithuanianMacedonian (mk): neutral rephrasingmkMacedonianMalayalam (ml): neutral rephrasingmlMalayalamMaltese (mt): neutral rephrasingmtMalteseMarathi (mr): neutral rephrasingmrMarathiNepali (ne): neutral rephrasingneNepaliNorwegian (no): neutral rephrasingnoNorwegianPashto (ps): neutral rephrasingpsPashtoPolish (pl): neutral rephrasingplPolishPortuguese (European) (pt): neutral rephrasingptPortuguese…Punjabi (pa): neutral rephrasingpaPunjabiRomanian (ro): neutral rephrasingroRomanianRussian (ru): neutral rephrasingruRussianScottish Gaelic (gd): neutral rephrasinggdScottish G…Serbian (sr-latn): neutral rephrasingsr-latnSerbianSinhala (si): neutral rephrasingsiSinhalaSlovak (sk): neutral rephrasingskSlovakSlovenian (sl): neutral rephrasingslSlovenianSomali (so): neutral rephrasingsoSomaliSpanish (European) (es): neutral rephrasingesSpanish (E…Swedish (sv): neutral rephrasingsvSwedishTamil (ta): neutral rephrasingtaTamilTelugu (te): neutral rephrasingteTeluguThai (th): neutral rephrasingthThaiUkrainian (uk): neutral rephrasingukUkrainianUrdu (ur): neutral rephrasingurUrduVietnamese (vi): neutral rephrasingviVietnameseWelsh (cy): neutral rephrasingcyWelshYiddish (yi): neutral rephrasingyiYiddishArmenian (hy): don't add a gender the source does not specifyhyArmenianAssamese (as): don't add a gender the source does not specifyasAssameseAzerbaijani (az): don't add a gender the source does not specifyazAzerbaijaniBasque (eu): don't add a gender the source does not specifyeuBasqueBengali (bn): don't add a gender the source does not specifybnBengaliBurmese (my): don't add a gender the source does not specifymyBurmeseCebuano (ceb): don't add a gender the source does not specifycebCebuanoEstonian (et): don't add a gender the source does not specifyetEstonianFarsi (fa): don't add a gender the source does not specifyfaFarsiFinnish (fi): don't add a gender the source does not specifyfiFinnishGeorgian (ka): don't add a gender the source does not specifykaGeorgianHaitian Creole (ht): don't add a gender the source does not specifyhtHaitian Cr…Hungarian (hu): don't add a gender the source does not specifyhuHungarianIgbo (ig): don't add a gender the source does not specifyigIgboIndonesian (id): don't add a gender the source does not specifyidIndonesianJavanese (jv): don't add a gender the source does not specifyjvJavaneseKazakh (kk): don't add a gender the source does not specifykkKazakhKhmer (km): don't add a gender the source does not specifykmKhmerKinyarwanda (rw): don't add a gender the source does not specifyrwKinyarwandaKyrgyz (ky): don't add a gender the source does not specifykyKyrgyzLao (lo): don't add a gender the source does not specifyloLaoMalagasy (mg): don't add a gender the source does not specifymgMalagasyMalay (ms): don't add a gender the source does not specifymsMalayMongolian (mn): don't add a gender the source does not specifymnMongolianOdia (Oriya) (or): don't add a gender the source does not specifyorOdia (Oriy…Sesotho (st): don't add a gender the source does not specifystSesothoShona (sn): don't add a gender the source does not specifysnShonaSundanese (su): don't add a gender the source does not specifysuSundaneseSwahili (sw): don't add a gender the source does not specifyswSwahiliTagalog (tl): don't add a gender the source does not specifytlTagalogTajik (tg): don't add a gender the source does not specifytgTajikTatar (tt): don't add a gender the source does not specifyttTatarTurkish (tr): don't add a gender the source does not specifytrTurkishTurkmen (tk): don't add a gender the source does not specifytkTurkmenUyghur (ug): don't add a gender the source does not specifyugUyghurUzbek (uz): don't add a gender the source does not specifyuzUzbekWolof (wo): don't add a gender the source does not specifywoWolofXhosa (xh): don't add a gender the source does not specifyxhXhosaYoruba (yo): don't add a gender the source does not specifyyoYorubaZulu (zu): don't add a gender the source does not specifyzuZuluneutral rephrasing (60)don't add a gender the source does not specify (40)100 target languages, one strategy each, chosen from what the language offers. The instruction enters the prompt at the advancedquality level.
Gender-neutrality strategy by language

More on Harnesses

Takeaway 0

13 of the 28 MT engines support a glossary and 8 support tone of voice through their API, and 14 support neither.

An MT engine takes the Standard requirements only through its API, if the model supports them. We upload a glossary in advance and reference it in each request, send the terms found in each segment with the request, or put those terms into a free-text instructions field.

Tone values differ by engine: formal, natural, expressive or precise at ALL-Lab, politeness as more or less at Supertext, formality as more, less, prefer_more or prefer_less at DeepL Next Gen. Naver accepts tone only in Korean and Japanese, DeepL Next Gen in 13 languages and Supertext in 26.

Takeaway 0

We run a dedicated test for each of three types of glossary support, because advertised support is not always present, often comes with limits, and can fail without an error.

"Supports glossaries" means one of three things across the models we tested: terms inserted into the prompt, a glossary uploaded in advance, or a dynamic glossary sent with each request. For a model with glossary support in a language, we benchmark two translations: a baseline, and one adjusted with the glossary and the other Standard requirements. For a model without glossary support in a language, we stop at the baseline. In both cases, we then try to improve the best results further by adding workflow steps.

Takeaway 0

Sending a glossary to an MT engine does not guarantee its use, so we test it with texts that must change when the glossary applies.

MT engines accept a glossary through the API and report success. Often the translation does not change, and the API response does not show it. So we built a test set that contains the glossary terms. We translate it with the glossary and without it, and count the approved terms in each result. In 2026 the test set has 46 terms in 16 languages.

It caught three mistakes on our side that any integration can make. A glossary created for Google Cloud Advanced Translation does not apply to Google Translation LLM, although both sit behind one API. ModernMT imports a glossary in the background, and the id it returns is empty until the import completes. Yandex takes the glossary only inside each request, not as an uploaded resource.

The test set also showed where engines do not apply a glossary at all: Yandex rejects it for Belarusian, Ukrainian and Serbian, Google Translation LLM rejects it for Serbian in Latin script, and ModernMT ignores it for Arabic.

Takeaway 0

We use one prompt template for all 100 languages, with three parameters (the target language and its script, the tone instruction and the glossary terms in the segment).

There are two templates: a short one for the Basic quality level and a longer one for the Standard level. We name the script where models diverge: Latin for Serbian and Bosnian, Cyrillic for Kazakh, Hebrew script for Yiddish, Kurmanji for Kurdish. The tone instruction stays the same across a language. We match the glossary terms per segment. NMT models do not support prompts, so we pass the glossary and the tone of voice through API parameters, if the model supports them.

For requests with context, we use Intento Language Hub to retrieve the relevant glossary terms and language-specific tone instructions for the prompt.

Automate translation to meet your requirements

See Intento Language Hub in action.

Book a demo
Leave feedback