> ## Documentation Index
> Fetch the complete documentation index at: https://developer.sanas.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Language Translation

> Create a translation processor, choose languages, auto-detect, and switch languages live

## Creating a translation processor

```cpp theme={null}
auto p = sdk->CreateAudioProcessor(
    AudioParams::WithLanguages("en-US", "es-ES", 16000), rc,
    onState, onTranscript);
```

## Language code format

Language codes follow BCP-47 format: `language-REGION`, for example `"en-US"`, `"es-ES"`, `"ar-SA"`. Pass `"*"` as the source language for automatic source-language detection.

## Supported languages

The exact set available to your account is determined by Portal entitlements. Commonly available languages:

| Language              | Code    | Language              | Code     |
| --------------------- | ------- | --------------------- | -------- |
| Arabic (Saudi Arabia) | `ar-SA` | Italian               | `it-IT`  |
| Arabic (UAE)          | `ar-AE` | Japanese              | `ja-JP`  |
| Czech                 | `cs-CZ` | Korean                | `ko-KR`  |
| Danish                | `da-DK` | Malay                 | `ms-MY`  |
| Dutch                 | `nl-NL` | Mandarin              | `zh-CN`  |
| English (UK)          | `en-GB` | Polish                | `pl-PL`  |
| English (US)          | `en-US` | Portuguese (Brazil)   | `pt-BR`  |
| Finnish               | `fi-FI` | Portuguese (Portugal) | `pt-PT`  |
| French                | `fr-FR` | Romanian              | `ro-RO`  |
| French (Canadian)     | `fr-CA` | Russian               | `ru-RU`  |
| German                | `de-DE` | Spanish (Lat. Am.)    | `es-419` |
| Greek                 | `el-GR` | Spanish (Spain)       | `es-ES`  |
| Hindi                 | `hi-IN` | Swedish               | `sv-SE`  |
| Hungarian             | `hu-HU` | Thai                  | `th-TH`  |
| Indonesian            | `id-ID` | Turkish               | `tr-TR`  |

## Auto source-language detection

```cpp theme={null}
AudioParams::WithLanguages("*", "fr-FR", 16000)
```

## Conversation ID

A conversation ID ties a stream to a named session. The SDK auto-generates a UUID if you leave it empty. When calling `UpdateLanguageConfig` to switch languages on a live processor, use the same conversation ID that was set at creation time — do not generate a new one.

## Changing languages on a live stream

You can switch the language pair on a `kReady` processor without closing the connection.

```cpp theme={null}
// conversationId = same value used when processor was created
LanguageConfig cfg("en-US", "fr-FR", conversationId);
UpdateLanguageResult r = processor->UpdateLanguageConfig(cfg);
// check: kSuccess / kProcessorNotReady / kInvalidParameters / kFailed
```
