When your product renders "account" as "cuenta" in one screen and "perfil" in another, you don't have a translation problem, you have a terminology control problem. Inconsistent terms erode user trust, inflate review costs, and create legal risk in regulated industries. Translation APIs from Ollang, Google, DeepL, Microsoft, Amazon, and ModernMT all offer mechanisms to inject glossaries and enforce terminology at request time, but their capabilities, constraints, and failure modes differ significantly. This article breaks down how each provider handles term injection, formality control, and domain adaptation at the API level, with concrete request samples, size limits, precedence rules, and testing strategies that let engineering teams codify style guides into production pipelines.
If your localization pipeline demands consistent, auditable terminology enforcement at scale, consider a unified integration layer that abstracts provider differences. See how Ollang orchestrates glossaries and formality across engines: Schedule a live walkthrough.
Why Terminology Control Matters in API-Driven Localization
The Cost of Inconsistent Terms at Scale
Terminology inconsistency is not merely a cosmetic issue. When a product label, legal term, or brand name is translated differently across surfaces, mobile UI, help center, marketing page, users notice. Support tickets increase. Regulatory reviewers flag discrepancies. And downstream, human reviewers spend disproportionate time correcting terms that should have been locked from the start.
The cost compounds with scale. An organization localizing into 30 languages with a 500-term glossary faces 15,000 term-language combinations. Without API-level enforcement, each of those combinations becomes a point of potential drift every time content is re-translated or updated. Manual review cannot keep pace with continuous delivery cycles.
How Glossaries Differ from Translation Memory
Glossaries and translation memories (TM) solve different problems, though they are often conflated.
| Mechanism | Scope | Function | API Behavior |
|---|---|---|---|
| Glossary | Term-level (word or short phrase) | Forces a specific translation for a source term | Injected per-request; overrides engine output for matched terms |
| Translation Memory | Segment-level (full sentence or paragraph) | Reuses previously approved translations for identical or fuzzy-matching segments | Typically queried before the engine; exact matches bypass MT entirely |
A glossary tells the engine: “Whenever you encounter ‘compliance,’ translate it as ‘conformité’ in French, always.” A TM says: “This exact sentence was translated and approved before; reuse it.” Both reduce inconsistency, but glossaries operate at a finer granularity and are the primary mechanism exposed by most translation APIs.
Formality, Domain Adaptation, and Style Enforcement
Terminology is one axis of control. Formality, whether the output uses formal or informal register (e.g., “vous” vs. “tu” in French, “Sie” vs. “du” in German), is another. Not all APIs expose formality as a parameter, and those that do support it for a limited set of target languages.
Domain adaptation goes further, training or tuning the underlying model on domain-specific corpora so that the engine’s baseline output already reflects your industry’s conventions. Microsoft’s Custom Translator and ModernMT’s adaptive engine are the primary examples of API-accessible domain adaptation. Google and Amazon focus on glossary injection rather than model customization.
Comparing Glossary and Terminology Features Across Providers
Google Cloud Translation v3: Glossary Resources
Google’s Cloud Translation v3 (Advanced) treats glossaries as named resources that you create, upload, and then reference by resource ID in translation requests. Glossaries are defined as TSV or CSV files with source-target term pairs, uploaded to Cloud Storage, and then registered via the API.
Key characteristics:
- Glossaries are scoped to a Google Cloud project and location.
- Each glossary supports a language pair (one source → one target) or a set-based configuration (one source → multiple target languages).
- Case sensitivity can be configured during glossary application.
- Glossary entries take precedence over the engine’s output for matched terms; the engine still controls surrounding grammar and syntax.
A simplified request to translate with a glossary attached:
{
"contents": ["Please review the compliance report."],
"targetLanguageCode": "fr",
"sourceLanguageCode": "en",
"glossaryConfig": {
"glossary": "projects/my-project/locations/us-central1/glossaries/my-glossary"
}
}
When a glossary is applied, the response includes a glossaryTranslations field in addition to translations, allowing you to inspect enforced output.
DeepL API: Glossary Endpoints and Formality Parameter
DeepL provides dedicated glossary management endpoints for creating, listing, and deleting glossaries. Glossaries are uploaded as tab-separated entries and are tied to a specific language pair.
Distinctive features:
- Glossaries are strictly unidirectional. A glossary for EN→DE does not apply to DE→EN; you need a separate resource.
- DeepL exposes a formality parameter (less, more, default, prefer_less, prefer_more) on translation requests, supported for a subset of target languages including German, French, Dutch, Polish, Portuguese, and others.
- The prefer_* variants are soft preferences: if formality is unsupported for the target language, the request succeeds without error.
A curl example attaching both a glossary and formality preference:
curl -X POST https://api-free.deepl.com/v2/translate \
-H "Authorization: DeepL-Auth-Key YOUR_KEY" \
-d "text=Please review the compliance report." \
-d "source_lang=EN" \
-d "target_lang=DE" \
-d "glossary_id=abc123-def456" \
-d "formality=more"
Microsoft Translator: Custom Translator and Protected Spans
Microsoft offers two distinct mechanisms. The Custom Translator portal lets you train custom models on parallel corpora, producing a category (categoryId) that you pass in translation requests to route traffic to your trained model. This is full domain adaptation, not just term injection. You can include a terminology (dictionary) file during training to reinforce specific terms.
For lighter-weight control in real-time requests, Microsoft supports HTML-aware translation with the ability to protect spans from translation (e.g., using translate="no" or a notranslate class). This avoids unwanted changes to tokens and brand names, but it does not replace a per-request glossary.
Notes on Microsoft’s approach:
- No native, external glossary resource you can attach per request in the standard real-time API.
- Custom Translator models are versioned; you can deploy and roll back model versions independently.
- Effective domain adaptation typically requires thousands of parallel sentence pairs for training.
Amazon Translate: Custom Terminology
Amazon Translate supports custom terminology as CSV or TMX files uploaded via the API. Terms are matched in the source text, and the engine is constrained to use the specified target term.
Key characteristics:
- Terminology files have a documented size limit (commonly 10 MB per file; check the latest AWS limits).
- You can attach one terminology resource per translation request.
- Amazon Translate supports a Directionality setting: UNI (unidirectional) or MULTI (entries carry language codes and can serve multiple pairs).
- Formality control is available for a limited set of language pairs via the Settings.Formality parameter (FORMAL or INFORMAL).
A request payload with custom terminology:
{
"Text": "Please review the compliance report.",
"SourceLanguageCode": "en",
"TargetLanguageCode": "fr",
"TerminologyNames": ["my-legal-glossary"],
"Settings": {
"Formality": "FORMAL"
}
}
ModernMT: Adaptive Engine and Context Injection
ModernMT takes a different approach. Rather than relying only on static glossary files, ModernMT’s engine adapts in real time to translation memories and glossaries provided as context. You can supply TM segments and glossary entries alongside the translation request or select specific memories to influence output, without a pre-training step.
In this context-injection model, terms act as constraints while TM entries steer phrasing and style. You can route different content types (legal, marketing, UI) to different memories within the same API integration.
Feature Comparison Table
| Capability | Google v3 | DeepL | Microsoft | Amazon Translate | ModernMT | Ollang (orchestration layer) |
|---|---|---|---|---|---|---|
| Glossary upload | Cloud Storage + API | API endpoints | No per-request glossary; protect spans or use Custom Translator | API upload (CSV/TMX) | Per-request injection and memory selection | Centralized glossary managed once, normalized and synced across engines |
| Formality control | No | Yes (subset of languages) | No native parameter | Yes (subset of pairs) | No native parameter | Applies each engine’s formality controls where supported; enforced via review workflows elsewhere |
| Domain adaptation | No | No | Custom Translator (trained models) | No | Real-time adaptive | Multi-engine routing: sends each content type to the best-fit engine or LLM |
| Glossary directionality | Pair or set-based | Unidirectional only | N/A | Uni or multi | Per-request | Normalizes directionality differences across providers |
| Versioning | Replace glossary resource | Re-create glossary | Model versioning | File replacement | Stateless per request | Centralized versioning with adherence monitoring and human-in-the-loop review |
Note: Ollang is not a standalone MT engine. It is an orchestration and execution layer that sits across the engines above, providing centralized glossary and terminology management, terminology enforcement, multi-engine routing with fallback orchestration, human-in-the-loop workflows, and centralized monitoring of adherence across every provider and language pair.
