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

# Translate templates with AI

> Add locales to a notification template and translate content with AI in Design Studio.

Courier can send the same notification in multiple languages. In Design Studio, you write content once in a default language, add locales, and let AI translate each field. When you update the source copy later, Courier flags outdated translations so you can refresh them in one click.

This tutorial walks through the full flow: open the translation editor, add a locale, review AI-generated translations, and keep them in sync when your default content changes. Prefer to manage translations in code? Use the [localization API](/tutorials/content/localize-notifications-with-api) instead.

## Add a locale

Open your template in Design Studio, then click the **globe** icon in the toolbar (**Manage localization and translations**). The **Add locale** modal opens.

<Frame caption="Open localization from the template toolbar">
  <img src="https://mintcdn.com/courier-4f1f25dc/_9XN_YUDfQJ1ySLe/images/AI-Translate-Button.png?fit=max&auto=format&n=_9XN_YUDfQJ1ySLe&q=85&s=c245341fcb22762eafae425278e62312" alt="AI Translate Button" width="637" height="188" data-path="images/AI-Translate-Button.png" />
</Frame>

Search for your target language and select it.

<Frame caption="Search and select a target language">
  <img src="https://mintcdn.com/courier-4f1f25dc/_9XN_YUDfQJ1ySLe/images/Translate-Flow---Choose-Language.png?fit=max&auto=format&n=_9XN_YUDfQJ1ySLe&q=85&s=9541d18f9476d02784ab4ed17983765d" alt="Translate Flow Choose Language" width="1000" height="922" data-path="images/Translate-Flow---Choose-Language.png" />
</Frame>

Check **Translate with AI** to generate translations automatically when you add the locale. You can also translate manually or run AI translation later from the review screen.

<Frame caption="Enable Translate with AI when adding a locale">
  <img src="https://mintcdn.com/courier-4f1f25dc/_9XN_YUDfQJ1ySLe/images/Translate-Flow---Language-Selected.png?fit=max&auto=format&n=_9XN_YUDfQJ1ySLe&q=85&s=7578d4d89f849ac8f77db7f243cd5a0c" alt="Translate Flow Language Selected" width="700" height="544" data-path="images/Translate-Flow---Language-Selected.png" />
</Frame>

Click **Add**. Courier creates the locale and runs AI translation across all translatable fields in the template, including email subjects, body text, and button labels.

## Review translations

After translation completes, the review screen shows a side-by-side table: **Default** on the left, your target locale on the right. Each row maps one content field (subject line, paragraph, call-to-action, and so on).

<Frame caption="Review AI-generated translations field by field">
  <img src="https://mintcdn.com/courier-4f1f25dc/_9XN_YUDfQJ1ySLe/images/Translations-Review-Screen---Translations-Complete.png?fit=max&auto=format&n=_9XN_YUDfQJ1ySLe&q=85&s=e7f355946111abc73c67c62fc3f34c0f" alt="Translations Review Screen Translations Complete" width="1000" height="479" data-path="images/Translations-Review-Screen---Translations-Complete.png" />
</Frame>

Use the locale list in the sidebar to switch between languages. The status badge at the top shows how many fields are translated for the active locale.

To preview how a locale renders, click **Preview**. Edit any field directly in the right column if you want to adjust the AI output before publishing.

<Tip>
  AI translation preserves [variables](/platform/content/variables/inserting-variables) in your template. Review fields that contain dynamic placeholders to confirm the translated text still reads naturally around `{variable}` tokens.
</Tip>

## Update outdated translations

When you change content in the default language, Courier marks existing translations as **outdated**. The review screen highlights the changed source string and shows a warning on the affected translation.

<Frame caption="Outdated translation flagged after a source change">
  <img src="https://mintcdn.com/courier-4f1f25dc/_9XN_YUDfQJ1ySLe/images/Translations-Review-Screen---String-Out-Of-Date-Needs-Translation.png?fit=max&auto=format&n=_9XN_YUDfQJ1ySLe&q=85&s=b5c8f6ec110fff230636784e82679a1b" alt="Translations Review Screen String Out Of Date Needs Translation" width="1000" height="426" data-path="images/Translations-Review-Screen---String-Out-Of-Date-Needs-Translation.png" />
</Frame>

Click the **Translate all** button (or the per-field AI action) to re-translate outdated fields. Courier uses the current default text as the source and updates the locale in place.

You can also translate individual fields without re-running the full locale.

## Send localized notifications

Courier picks the right locale at send time based on the recipient's profile or the `locale` field in your send request:

```json theme={null}
{
  "message": {
    "to": {
      "email": "user@example.com",
      "locale": "es"
    },
    "template": "TEMPLATE_ID",
    "data": {
      "name": "Alex"
    }
  }
}
```

To verify before sending, create a [test event](/tutorials/content/how-to-preview-notification) with a `locale` on the profile. The preview shows the localized version instead of the default language.

## What's next

<CardGroup cols={2}>
  <Card title="Localization API" icon="code" href="/tutorials/content/localize-notifications-with-api">
    Push translations from a script or translation management system.
  </Card>

  <Card title="Localization reference" icon="book" href="/platform/content/localization">
    Locale formats, RTL support, and full API details.
  </Card>

  <Card title="Handlebars formatting" icon="calendar" href="/platform/content/template-designer/handlebars-designer#use-cases">
    Format dates and numbers for a user's locale.
  </Card>

  <Card title="Send conditions" icon="route" href="/platform/content/template-settings/send-conditions">
    Route to channels based on locale or other profile data.
  </Card>
</CardGroup>
