> ## Documentation Index
> Fetch the complete documentation index at: https://docs-terra.withunify.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Translations

> Multi-language support with auto-translation

# Translations

> Every user-facing string supports unlimited languages via I18nString.

## I18nString Type

```typescript theme={null}
type I18nString = Record<string, string>;

// Example
{
  en: "Full Name",
  es: "Nombre Completo",
  zh: "全名"
}
```

## Translation Workflow

1. **Create form in English** — Primary language
2. **Add languages** — In form settings
3. **Translate** — Auto or manual
4. **Review** — Check translations

## DeepL Auto-Translation

Click the sparkle button to auto-translate:

```typescript theme={null}
async function translateField(
  text: string,
  from: string,
  to: string
): Promise<string> {
  const response = await deepl.translateText(text, from, to);
  return response.text;
}
```

**Supported languages:** English, Spanish, Chinese, French, German, Portuguese, Russian, Japanese, Korean, Arabic, and 20+ more.

## Manual Translation

For unsupported languages or custom translations:

1. Export to CSV
2. Translate externally
3. Import updated CSV

## Language Switcher

Forms include a language dropdown:

```typescript theme={null}
{
  type: "language_preference",
  id: "lang-pref",
  label: { en: "Preferred Language" },
  showNativeNames: true,  // "Español" not "Spanish"
  showFlags: true
}
```

## Runtime Switching

Applicants can switch languages mid-form. All labels, placeholders, and error messages update instantly.

***

<CardGroup cols={2}>
  <Card title="Schema Design" icon="file-code" href="/core-systems/forms/schema-design">
    I18nString in schemas
  </Card>

  <Card title="Variable Interpolation" icon="code" href="/features/variable-interpolation">
    Dynamic content
  </Card>
</CardGroup>
