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

# Template translations

> Send each contact a template in their own language, with a translated subject, preview text and body per language.

A template can have a translation for each language your workspace sends in. When an email goes out, each contact gets the version that matches their language, and everyone else gets the default.

This is separate from the language of the InstantCampaign dashboard itself. You can use the app in English while emailing contacts in French.

## How the language is chosen

* Each contact has a **language** on their record.
* Your workspace has a list of **Supported languages** and a **Default language**.
* The template itself is always the default-language version. A translation overrides it for one language.

When sending, the contact's language is matched to your languages: an exact match first (`pt-BR`), then the base language in either direction (a `fr-CA` contact gets `fr`; a `pt` contact gets `pt-BR`), otherwise the default.

Anything a translation leaves blank falls back to the default, so a translation can never leave a contact with an empty email.

## Set up your languages

<Steps>
  <Step title="Add languages to your workspace">
    Go to **Settings** → **General** (under **Workspace**). Under **Supported languages**, click **Add language** for each language you send in, then choose the **Default language**.
  </Step>

  <Step title="Give contacts a language">
    Set the language on each contact's record, or include it when you import contacts or create them through the API.
  </Step>
</Steps>

Until your workspace has more than one language, the **Translations** button doesn't appear in the builder.

## Translate a template

<Steps>
  <Step title="Open Translations">
    In the email builder, click **Translations** in the toolbar. You'll see one card per language (the default language isn't listed, because it *is* the template).
  </Step>

  <Step title="Enable the language">
    Turn on the switch for the language. A disabled translation is never sent, so contacts with that language get the default.
  </Step>

  <Step title="Translate the subject and preview text">
    Fill in **Subject line** and **Preheader**, or leave them blank to use the default, then click **Save**.
  </Step>

  <Step title="Translate the body">
    Click **Open email editor** (or **Edit translated body** once there is one). The builder opens in language mode, with a banner saying **Editing the … translation**. It starts from a copy of the default body. Edit the text and it saves as you go.
  </Step>
</Steps>

**Reset from default** replaces the translation's body with a fresh copy of the default template. This is useful after you've redesigned the default. Click **Back to translations** in the banner to return to the list.

### What's different in language mode

Saving in language mode changes that language only; the default template isn't touched. Some template-wide features are hidden while you edit a translation:

* the **AMP** toggle (AMP is single-language),
* renaming, approval and **Version History**,
* live collaboration with teammates.

The compliance footer is still added to every language.

## Where translations are used

| Sent through      | Language used                                                   | Subject                                                               |
| ----------------- | --------------------------------------------------------------- | --------------------------------------------------------------------- |
| Campaigns         | Each recipient's language                                       | The translation's subject, unless the send is a subject-line A/B test |
| Journeys          | The enrolled contact's language                                 | The translation's subject                                             |
| Transactional API | The contact's language, or a `language` you pass in the request | Always the subject your request sends                                 |

<Note>
  In a subject-line A/B test, the test's subject variants win over translated subjects, so the subject isn't localized for that send. The body still is.
</Note>

Duplicating a template copies all its translations.

## Check a translation

While you edit a translation, the builder's **Preview** tab shows the translated body.

In language mode, **Preview as…** and **Send Test Email** use the translation too: the translated subject line, preview text and body.

* A plain test sends the last saved version of the translation. Wait until the toolbar shows **Saved**.
* **Send test with this preview context** sends the body you're editing, for the contact and sample data you picked in **Preview as…**.

If the translation's switch is off, the preview and the test use the default language, the same as a real send.

## Limits

* The compliance footer that InstantCampaign adds (the "why you received this" line, **Unsubscribe** and **Manage preferences**) follows the recipient's language in English, French, Spanish, German, Italian, Portuguese and Dutch, and is English otherwise. A footer block in your template keeps the text you wrote.
* Translations aren't part of the approval workflow. Approval applies to the template as a whole.
* AMP content is single-language.
* In journeys, a preheader set on the email step itself takes priority over the translation's preheader.

## Troubleshooting

<AccordionGroup>
  <Accordion title="I don't see Translations in the builder">
    Your workspace has only one language. Add more under **Settings** → **General**, then reload the builder.
  </Accordion>

  <Accordion title="A contact got the default language">
    Check that the translation is **Enabled**, and that the contact's language matches one of your workspace languages. A contact with no language gets the default.
  </Accordion>

  <Accordion title="My translated subject wasn't used">
    For transactional API sends, the subject in your request always wins. For campaigns, a subject A/B test overrides translated subjects.
  </Accordion>
</AccordionGroup>
