## Creating a translation processor

```
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

```
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
// 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
```
