# Translation

> Target languages, translation engines, glossaries and style prompts.

`translations` is a list with one entry per target language. Leave it out, or send `[]`, to only
transcribe.

```json
"translations": [
  { "language": "es", "engine": { "@type": "Gemini" } },
  { "language": "de", "engine": { "@type": "DeepL" } },
  { "language": "pt-BR" }
]
```

| Field | | |
|---|---|---|
| `language` | required | The target language. |
| `engine` | optional | The translation engine. Left out, the recommended engine for the language is used (`pt-BR` above). |
| `ttsOptions` | optional | Dub this language. See [Dubbing](/vod-express/configuration/dubbing). |
| `outputLabel` | optional | The label written where an output has one; the language's English name by default. |

A translation only produces something when an output uses it: a dub track (if it is dubbed),
a subtitle track or a subtitle file in that language.

## Engines

| `@type` | Engine | Good for |
|---|---|---|
| `Gemini` | Google Gemini (LLM) | Natural, context-aware translation, speaker-gender aware. A strong default for dubbing. |
| `OpenAI` | OpenAI GPT (LLM) | The same, with GPT models. |
| `Nova` | Amazon Nova (LLM) | The same, with Amazon's model. |
| `DeepL` | DeepL | Fast, literal, excellent for European languages. |
| `Google` | Google Translate | The widest language coverage. |
| `Soniox` | Soniox | Pairs with Soniox transcription. |
| `NoTranslation` | None | No machine translation: the source text is passed through. |

Which engines support a language: [Languages](/vod-express/configuration/languages). Every engine's options:
[Config reference: `translations`](/vod-express/configuration/reference#translations).

### LLM engines: Gemini, OpenAI, Nova

```json
{
  "@type": "Gemini",
  "model": "Gemini 3.1 Flash Lite",
  "extraPrompt": "Informal register, as spoken between friends. Keep fishing terminology in English.",
  "glossary": { "crankbait": "crankbait", "Fishing Channel": "Fishing Channel" }
}
```

| Field | Default | |
|---|---|---|
| `model` | Gemini: `"Gemini 3.1 Flash Lite"`; OpenAI: `"GPT-5.6 Luna"`; Nova: `"Nova 2 Lite"` | Models listed by the schema of your build. |
| `extraPrompt` | `"Avoid profane language in translated output."` | Instructions for style, register, audience. Replaces the default, so restate it if you want to keep it. |
| `glossary` | none | Terms with a fixed translation, see below. |
| `compression` | `true` | Condense long translations, which keeps a dub in step with the original speech. |
| `latencyMode` | chosen for the recognizer | `quality` translates whole sentences; `low-latency` smaller units. |

### DeepL, Google, Soniox

These take a `glossary` only.

```json
{ "@type": "DeepL", "glossary": { "Newsmax": "Newsmax" } }
```

## Glossaries

A glossary maps a source term to the translation it must have. Use it for names, brands and
terminology that must not be translated or must be translated one way:

```json
"glossary": {
  "Fishing Channel": "Fishing Channel",
  "largemouth bass": "lobina negra"
}
```

Or name a glossary of your account by its id. It must translate from the transcription language
into this translation's language, and it is read each time the project starts
([Your account's dictionaries](/vod-express/configuration/transcription#your-accounts-dictionaries)):

```json
{ "language": "es", "engine": { "@type": "Gemini", "glossary": 17 } }
```

## Several languages at once

Each entry is independent: mix engines, and dub some languages but not others. Here Spanish and
German are dubbed, French is subtitled only:

```json
"translations": [
  { "language": "es", "engine": { "@type": "Gemini" }, "ttsOptions": { "provider": { "@type": "Deepdub", "voice": "auto" } } },
  { "language": "de", "engine": { "@type": "Gemini" }, "ttsOptions": { "provider": { "@type": "MultiVoice" } } },
  { "language": "fr", "engine": { "@type": "DeepL" } }
]
```

Full project: [Several languages](/vod-express/examples/multi-language).
