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 errors fall by 54% in three-step solutions (translation + LQA + repair) and just by 7% in two-step solutions (translation + post-edit).

In a two-step solution, we post-edit the one-step translation with an LLM. In a three-step solution, we assess the translation with Intento LQA and send it with the findings to an LLM for a repair. We implement these two-step and three-step workflows in Intento Language Hub, including the transfer of Intento LQA findings to the repair step.

With the same LLM in every step, general translation quality errors weighted by severity fall on average from 40 per 1,000 words in the one-step solutions to 37 in the two-step solutions and to 18 in the three-step solutions. The three-step solutions have fewer errors than the two-step solutions with each of the 17 LLMs, from Anthropic, DeepSeek, Google, Mistral, OpenAI, xAI and z.ai.

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. We assess every two-step and three-step solution again, without the findings in the prompts of the LQA judges.

General translation quality errors per 1,000 words in one-step, two-step and three-step solutions
Chart data
General translation quality errors per 1,000 words in one-step, two-step and three-step solutions
SolutionsAverage, weighted errors per 1,000 words90% interval, low90% interval, highMedian
One-step solutions39.937.442.934.3
Two-step solutions (translation + post-edit)37.334.640.331.3
Three-step solutions (translation + LQA + repair)18.216.62015
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 requirement
Chart data
Share of one-step solutions meeting each requirement
RequirementMT engines, off the shelf, %MT engines, adjusted, %LLMs, adjusted, %
General translation quality0%5%18%
Tone of voice56%66%89%
Terminology0%27%53%
Tag handling1%0%57%
Formatting1%5%78%
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 requirement
Chart data
Gender-neutral versions still meeting every Standard requirement
Gender-neutrality agentStill meet every Standard requirement, %Fall short, %
Agent in the translation step only3961
Agent at all stages, including post-editing, LQA and repair8515
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 language
Chart data
Gender-neutrality strategy by language
LanguageCodeStrategy
Afrikaansafneutral rephrasing
Albaniansqneutral rephrasing
Amharicamneutral rephrasing
Arabic (MSA)arneutral rephrasing
Belarusianbeneutral rephrasing
Bosnianbsneutral rephrasing
Bulgarianbgneutral rephrasing
Catalancaneutral rephrasing
Chinese Simplifiedzhneutral rephrasing
Chinese Traditionalzh-hantneutral rephrasing
Croatianhrneutral rephrasing
Czechcsneutral rephrasing
Danishdaneutral rephrasing
Dutchnlneutral rephrasing
Frenchfrneutral rephrasing
Frisianfyneutral rephrasing
Galicianglneutral rephrasing
Germandeneutral rephrasing
Greekelneutral rephrasing
Gujaratiguneutral rephrasing
Hausahaneutral rephrasing
Hebrewheneutral rephrasing
Hindihineutral rephrasing
Icelandicisneutral rephrasing
Irishganeutral rephrasing
Italianitneutral rephrasing
Japanesejaneutral rephrasing
Kannadaknneutral rephrasing
Koreankoneutral rephrasing
Kurdish (Kurmanji)kuneutral rephrasing
Latvianlvneutral rephrasing
Lithuanianltneutral rephrasing
Macedonianmkneutral rephrasing
Malayalammlneutral rephrasing
Maltesemtneutral rephrasing
Marathimrneutral rephrasing
Nepalineneutral rephrasing
Norwegiannoneutral rephrasing
Pashtopsneutral rephrasing
Polishplneutral rephrasing
Portuguese (European)ptneutral rephrasing
Punjabipaneutral rephrasing
Romanianroneutral rephrasing
Russianruneutral rephrasing
Scottish Gaelicgdneutral rephrasing
Serbiansr-latnneutral rephrasing
Sinhalasineutral rephrasing
Slovakskneutral rephrasing
Slovenianslneutral rephrasing
Somalisoneutral rephrasing
Spanish (European)esneutral rephrasing
Swedishsvneutral rephrasing
Tamiltaneutral rephrasing
Teluguteneutral rephrasing
Thaithneutral rephrasing
Ukrainianukneutral rephrasing
Urduurneutral rephrasing
Vietnamesevineutral rephrasing
Welshcyneutral rephrasing
Yiddishyineutral rephrasing
Armenianhydon't add a gender the source does not specify
Assameseasdon't add a gender the source does not specify
Azerbaijaniazdon't add a gender the source does not specify
Basqueeudon't add a gender the source does not specify
Bengalibndon't add a gender the source does not specify
Burmesemydon't add a gender the source does not specify
Cebuanocebdon't add a gender the source does not specify
Estonianetdon't add a gender the source does not specify
Farsifadon't add a gender the source does not specify
Finnishfidon't add a gender the source does not specify
Georgiankadon't add a gender the source does not specify
Haitian Creolehtdon't add a gender the source does not specify
Hungarianhudon't add a gender the source does not specify
Igboigdon't add a gender the source does not specify
Indonesianiddon't add a gender the source does not specify
Javanesejvdon't add a gender the source does not specify
Kazakhkkdon't add a gender the source does not specify
Khmerkmdon't add a gender the source does not specify
Kinyarwandarwdon't add a gender the source does not specify
Kyrgyzkydon't add a gender the source does not specify
Laolodon't add a gender the source does not specify
Malagasymgdon't add a gender the source does not specify
Malaymsdon't add a gender the source does not specify
Mongolianmndon't add a gender the source does not specify
Odia (Oriya)ordon't add a gender the source does not specify
Sesothostdon't add a gender the source does not specify
Shonasndon't add a gender the source does not specify
Sundanesesudon't add a gender the source does not specify
Swahiliswdon't add a gender the source does not specify
Tagalogtldon't add a gender the source does not specify
Tajiktgdon't add a gender the source does not specify
Tatarttdon't add a gender the source does not specify
Turkishtrdon't add a gender the source does not specify
Turkmentkdon't add a gender the source does not specify
Uyghurugdon't add a gender the source does not specify
Uzbekuzdon't add a gender the source does not specify
Wolofwodon't add a gender the source does not specify
Xhosaxhdon't add a gender the source does not specify
Yorubayodon't add a gender the source does not specify
Zuluzudon't add a gender the source does not specify

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