Glossary support in 57 MT engines and LLMs

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.

Which MT engines and LLMs support glossaries?

Of the 57 models we evaluated, 42 have a way to take a glossary and 15 have none. For the LLMs we use retrieval-augmented generation (RAG): we insert the terms found in each segment into the prompt with the instruction to translate them exactly as specified. DeepL, Google Cloud Advanced, Google Translation LLM, ModernMT, SYSTRAN and Tilde take a glossary uploaded in advance, and Widn AI, ALL-Lab, Supertext and Yandex a dynamic glossary sent with each request, each with limits by language. For each target language, we use Intento Language Hub to deliver the same glossary through these different interfaces.

Glossary support has limits missing from the vendor documentation

Some models reject a glossary for some languages. Yandex rejects it for Belarusian, Ukrainian and Serbian in Latin script, Google Translation LLM for Serbian in Latin script, and DeepL for Belarusian and Serbian. ModernMT accepts a glossary for Arabic but does not apply any of its terms.

Both Google models return their internal glossary markup as visible text in one segment of every translation with a glossary. We score the translation as returned, because that is what a customer calling the API receives.

Terms set up inside a vendor account are a different mechanism from a glossary sent with the request. Tilde takes its terms that way, and the same request sent from another account comes back without them.

The glossary holds nouns, our matcher is case-sensitive, and we count declined forms as applied

The glossary holds nouns and noun phrases. When we chose the 46 terms we left out verbs, proper nouns that stay as they are, and generic vocabulary, so no model has to inflect a verb from a glossary entry.

SYSTRAN assigns a part of speech to each glossary entry itself and treats entries as hints. It never applies some exact matches, inflects the terms it inserts, and with a dictionary attached returns different output from run to run.

Our matcher is case-sensitive and matches whole words. For RAG and the dynamic glossary we send a term to the model only when the segment contains it in the casing used in the glossary, so a term in a different form in the source is not sent. Yandex also applies each term pair only as an exact match.

In scoring we accept a glossary term in any inflected or compound form, as long as its words stay. A synonym or a paraphrase is a miss. So is an abbreviation where the glossary has the full term, or the full term where the glossary has an abbreviation. LLMs often leave out an abbreviation in brackets that the glossary adds and the English source lacks, such as (IB) or (TSM).

Glossary support by model

ModelVendorTypeGlossary languages reached (of 16)What we found
Retrieval-augmented generation (RAG) via prompt inserts (30 models)
AI21 Jamba Large 1.7AI21LLM16
Alibaba Cloud Qwen3-235B-A22BAlibabaLLM16
Anthropic Claude Fable 5AnthropicLLM16
Anthropic Claude Haiku 4.5AnthropicLLM16
Anthropic Claude Opus 4.8AnthropicLLM16
Anthropic Claude Sonnet 4.6AnthropicLLM16
Anthropic Claude Sonnet 5AnthropicLLM16
Apertus-8B-2509Swiss AI (Apertus)LLM (open-source)16
Cohere Command A (command-a-translate-08-2025)CohereLLM16
Cohere Tiny AyaCohereLLM16
DeepSeek V3.2DeepSeekLLM16
GLM-5z.aiLLM16
Google Gemini 3.1 Pro PreviewGoogleLLM16
Google Gemini 3.5 FlashGoogleLLM16
Google Gemma 4GoogleLLM (open-source)16
Grok 4.20 (non-reasoning)xAILLM16
Grok 4.20 (reasoning)xAILLM16
M2.5MiniMaxLLM16
Meta Llama 4 MaverickMetaLLM (open-source)16
Mistral Large 3MistralLLM16
Mistral Medium 3.1MistralLLM16
MoonshotAI Kimi K2.5MoonshotAILLM16
OpenAI GPT-4.1OpenAILLM16
OpenAI GPT-5.5OpenAILLM16
OpenAI GPT-5.6 LunaOpenAILLM16
OpenAI GPT-5.6 SolOpenAILLM16
OpenAI GPT-5.6 TerraOpenAILLM16
OpenAI gpt-oss-120bOpenAILLM (open-source)16
SpeakLeash Bielik-11B-v3.0-InstructSpeakLeashLLM (open-source)16Bielik-11B applied the glossary while ignoring the tone instruction: in German the share of glossary terms found in the output rose from 35% to 76% with the glossary.
Translated Lara 2TranslatedNMT (LLM)16Translated Lara 2 takes the terms found in each segment, and the tone and gender instructions, in a free-text instructions field.
A glossary uploaded in advance (6 models)
DeepL Next GenDeepLNMT (LLM)14DeepL Next Gen takes the glossary for 14 of the 16 languages: the glossary API rejects Belarusian and Serbian. With the glossary, the share of glossary terms found in the output rose from 53% to 79%.
Google Cloud Advanced Translation APIGoogleNMT16Google Cloud Advanced Translation takes the glossary for all 16 languages. With it, the share of glossary terms found in the output rose from 55% to 99%. In one segment of every translation made with a glossary, the matched terms come back wrapped in internal Google markup as visible text, and we score the translation as returned.
Google Translation LLMGoogleNMT (LLM)15Google Translation LLM rejects Serbian in Latin script. A glossary uploaded for the classic Google API does not apply to it: it needs its own glossary setting in the request. With a glossary the response carries two texts, and only the second has the glossary terms applied. With the glossary, the share of glossary terms found in the output rose by 40 points in 14 of the 16 languages. Same visible markup as the classic API in one segment. Its Korean translation with the glossary fell into a repetition loop and is excluded from scoring.
ModernMT Enterprise EditionModernMTNMT15ModernMT does not apply a glossary for Arabic. A glossary works only from the account it was uploaded to: the same id sent from another account resolves to nothing. The import runs in the background, and the id is empty until it completes. With the glossary, the share of glossary terms found in the output rose by 39 points in 15 of the 16 languages.
SYSTRAN PNMT APISYSTRANNMT14SYSTRAN PNMT takes the glossary as a user dictionary plus a translation profile on a SYSTRAN account, referenced by id. No glossary for Belarusian and Serbian in Latin script in this benchmark. SYSTRAN assigns a part of speech to each entry itself and treats entries as hints: it never applies some exact matches, and it inflects the terms it inserts. With a dictionary attached the output varies from run to run. With the glossary, glossary terms appeared more often in 12 of the 14 languages, with Arabic and Dutch flat.
TildeTildeNMT (LLM)11Tilde takes terms set up in the vendor console on its custom model, not sent with the request, so the same request from another account comes back without them. With them, the share of glossary terms found in the output rose from 48% to 69%, measured on 11 language pairs.
Dynamic glossary in the request: the terms found in each segment, sent as a list of term pairs (Widn AI, ALL-Lab), a dictionary (Supertext) or exact-match term pairs (Yandex) (6 models)
ALL-LabALL-LabNMT16ALL-Lab takes the terms found in each segment as a list in the request, and ALL-Lab has no free-text field for a gender instruction.
Supertext Supertext LLMSupertextNMT (LLM)16Supertext takes the terms found in each segment as a dictionary in the request, and Supertext has no field for a gender instruction.
Widn AI Tower AnthillWidn AINMT (LLM)16Widn AI Tower Anthill takes the terms found in each segment as a list in the request, and the gender instruction in a free-text instructions field.
Widn AI Tower SugarloafWidn AINMT (LLM)16Widn AI Tower Sugarloaf takes the terms found in each segment as a list in the request, and the gender instruction in a free-text instructions field.
Widn AI Tower VesuviusWidn AINMT (LLM)16Widn AI Tower Vesuvius takes the terms found in each segment as a list in the request, and the gender instruction in a free-text instructions field.
YandexYandexNMT13Yandex takes the glossary as term pairs inside each request, matched exactly. Yandex rejects a glossary for Belarusian, Ukrainian and Serbian in Latin script. With the glossary, the share of glossary terms found in the output rose by 35 points in 13 of the 16 languages.
No glossary support (15 models)
AlibabaAlibabaNMT0
AmazonAmazonNMT0
AppTek NMTAppTekNMT0
BaiduBaiduNMT0
Elia Elhuyar Machine Translation SystemEliaNMT0
iFlyTek MTiFlyTekNMT0
Microsoft TranslatorMicrosoftNMT0Microsoft Translator takes glossaries as phrase dictionaries compiled into a custom model during training, and in the request only as inline markup, documented for proper names and product names. We tested the stock model, so without a glossary.
Naver Papago NMT CommercialNaverNMT0Naver Papago has no glossary support and takes a tone setting for Korean and Japanese only.
NiuTransNiuTransNMT0
OracleOracleNMT0
PangeanicPangeanicNMT0
TarjamaTarjamaNMT0
TartuNLPTartuNLPNMT0
Tencent Cloud TMTTencentNMT0
YoudaoYoudaoNMT0

Glossary languages reached: the languages, of the 16 with a glossary, for which the model accepted the glossary. For RAG and the dynamic glossary our matcher selects the terms per segment, case-sensitive and on whole words only. Shares of glossary terms found in the output are exact-form counts from our delivery check, not the terminology scores of Intento LQA. Whether the model translates a language at all is a separate question, answered in the Models chapter.

Automate translation to meet your requirements

See Intento Language Hub in action.

Book a demo
Leave feedback