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

# Multi-Language Content

> Manage translations for your customer-facing content — listings, collections, locations, storefront pages, and more — across multiple languages.

TWICE Commerce supports multi-language content for customer-facing entities. You set a default language, enable additional languages, and translate fields like names and descriptions per entity. Untranslated fields fall back to the default language value.

## Definition

The translations system lets you maintain localized versions of text fields across your catalog, collections, locations, attributes, and templates. Each translation is scoped to a specific entity, field, and language — so you can translate the name and description of a single listing into as many languages as you have enabled.

Translations are stored separately from the source entities. The original content in your default language stays on the entity itself. Translated values are layered on top and served to customers based on their language preference.

## Where do I use it?

* **Settings > Languages** — set the default language and enable additional languages for your organization
* **Settings > Translations** — browse all translatable content grouped by type (listings, collections, locations, policy documents, attributes, variants), track progress, and edit translations
* **Catalog item editor** — click the translate icon next to Name or Description to add translations inline
* **Theme Editor > Translations** — translate storefront-authored content (hero text, section labels, SEO metadata, page copy) and override system strings. See [Theme Editor](/docs/sales-channels/online-store/theme-editor/overview)
* **Settings > Checkouts > Translations** — translate checkout-specific content (form labels, consent text, step copy) per checkout configuration
* **Storefront** — translated content is served automatically based on the customer's language

## How it works

Translations are organized in a three-level hierarchy:

```mermaid theme={null}
%%{init: {'flowchart': {'nodeSpacing': 20, 'rankSpacing': 20}}}%%
flowchart TB
    Group["Translation Group<br/>(entity type)"]
    Entity1["Entity<br/>(e.g. a specific listing)"]
    Entity2["Entity<br/>(e.g. another listing)"]
    Field1["Field: name"]
    Field2["Field: description"]
    Lang1["fi: 'Maastopyörä'"]
    Lang2["de: 'Mountainbike'"]

    Group --> Entity1
    Group --> Entity2
    Entity1 --> Field1
    Entity1 --> Field2
    Field1 --> Lang1
    Field1 --> Lang2

    style Group fill:#3b82f633,stroke:#3b82f6,stroke-width:3px,font-weight:bold
    style Entity1 fill:#10b98133,stroke:#10b981,stroke-width:2px
    style Entity2 fill:#10b98133,stroke:#10b981,stroke-width:2px
    style Field1 fill:#f59e0b33,stroke:#f59e0b,stroke-width:2px
    style Field2 fill:#f59e0b33,stroke:#f59e0b,stroke-width:2px
    style Lang1 fill:#8b5cf633,stroke:#8b5cf6,stroke-width:2px
    style Lang2 fill:#8b5cf633,stroke:#8b5cf6,stroke-width:2px
```

1. **Group** — a category of translatable entities (e.g. "Listings", "Collections", "Online store"). Each group shows how many entities it contains and your translation progress for the selected language.
2. **Entity** — a specific catalog item, collection, location, attribute, variant, or storefront section. Displays the entity label and its translatable fields.
3. **Field** — an individual text property (e.g. `name`, `description`). Each field holds one translation per enabled language.

## Supported entity types

### Catalog and inventory

| Entity Type          | Label            | Translatable Fields                                                    |
| :------------------- | :--------------- | :--------------------------------------------------------------------- |
| **Catalog item**     | Listings         | `name`, `description`, custom section headings, custom section content |
| **Collection**       | Collections      | `title`, `description`                                                 |
| **Service location** | Locations        | `name`, `publicName`, `description`                                    |
| **Policy document**  | Policy documents | `name`                                                                 |
| **Attribute**        | Attributes       | `name`, `description`, option labels                                   |
| **Variant**          | Variants         | `name`                                                                 |
| **Variant value**    | Variant values   | `value`                                                                |

Attributes with option-based values (e.g. a "Color" attribute with options "Red", "Blue", "Green") expose each option label as a separate translatable field. The translation editor groups these under the parent attribute.

These entity types are managed in **Settings > Translations**.

### Storefront content

| Entity Type                  | Label            | Translatable Fields                                                                                                                                                                                                                                                                                               |
| :--------------------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Storefront customization** | Online store     | Hero title, hero description, hero button, collection list titles, featured collection titles, listing list titles, about page hero, search bar text, footer copyright, announcement bar, sidebar text, SEO meta titles and descriptions (per page), about / terms / privacy page content, navigation item labels |
| **Checkout configuration**   | Checkout         | Section descriptions for each checkout step                                                                                                                                                                                                                                                                       |
| **Policy document**          | Policy documents | `name`                                                                                                                                                                                                                                                                                                            |

Storefront content is translated in the **Theme Editor > Translations** mode, not in Settings > Translations. Checkout content is translated in **Settings > Checkouts** on the Translations tab of each checkout configuration.

Only fields that have a non-empty value in the default language appear as translatable. If a listing has no description, the description field does not show up in the translation editor for that listing.

<Note>
  Email and document templates are also localizable per language, but you translate them from their own editors ([Settings > Emails](/docs/settings/emails), [Settings > Documents](/docs/settings/documents)) rather than from the centralized translation editor. The same resolution model applies: per-language override → source content → code default (system templates only).
</Note>

## Language configuration

### Default language

Every organization has a **default language** — the language your original content is written in. This defaults to English (`en`) but can be changed in **Settings > Languages**. The default language is the baseline that other translations are compared against.

### Enabled languages

Enable additional languages to start translating content into them. TWICE supports 24 languages:

|                 |                |                 |                           |
| :-------------- | :------------- | :-------------- | :------------------------ |
| English (en)    | Finnish (fi)   | Russian (ru)    | German (de)               |
| Slovak (sk)     | Swedish (sv)   | Dutch (nl)      | Hungarian (hu)            |
| Norwegian (no)  | French (fr)    | Spanish (es)    | Italian (it)              |
| Czech (cs)      | Danish (da)    | Lithuanian (lt) | Estonian (et)             |
| Polish (pl)     | Slovenian (sl) | Croatian (hr)   | Brazilian Portuguese (br) |
| Portuguese (pt) | Latvian (lv)   | Turkish (tr)    | Ukrainian (uk)            |

Disabling a language does not delete its translations — they are preserved and reappear if you re-enable the language.

## Translation progress

The translations interface tracks completion per group and language. Progress is calculated as:

**Translated fields / Total translatable fields**

* **Total translatable fields** counts only fields where the source entity has a non-empty default-language value.
* **Translated fields** counts fields that have a translation for the selected language.

This gives you a clear view of what still needs work before you launch a new language.

## System string overrides

Beyond translating your own content, you can override the built-in UI strings that TWICE provides. These are the labels, buttons, and messages that appear on the storefront and checkout (e.g. "Add to cart", "Select dates", filter labels). Overrides work in any language, including your default language — useful for rewording a label to match your business terminology.

System string overrides are managed in the **Theme Editor > Translations** mode under the **System strings** and **Commerce** tabs. Storefront strings apply to your online store only. Commerce strings are shared across all sales channels.

## Fallback behavior

When a translation is missing for a specific field and language, the system falls back to the default language value. Customers see the original content rather than an empty field.

## FAQs

<AccordionGroup>
  <Accordion title="Can I translate content into any language?">
    You can translate into any of the 24 supported languages. Enable the languages you need in **Settings > Languages** before adding translations.
  </Accordion>

  <Accordion title="What happens if I change the default language?">
    Changing the default language updates which content is treated as the baseline. Existing translations are preserved. The content on your entities (names, descriptions) is still in whatever language you originally wrote it in — the default language setting tells the system which language that is.
  </Accordion>

  <Accordion title="Do translations appear on the storefront automatically?">
    Yes. Once a translation exists for a field and language, it is served to customers whose language preference matches. Missing translations fall back to the default language value.
  </Accordion>

  <Accordion title="Where do I translate storefront content?">
    Storefront-authored content (hero text, section labels, about page, SEO metadata) is translated in the **Theme Editor > Translations** mode, not in Settings > Translations. Open the Theme Editor, switch to the Translations sidebar, select a target language, and edit fields inline.
  </Accordion>

  <Accordion title="Can I bulk-manage translations?">
    The translations editor in **Settings > Translations** lets you work through all entities in a group. You can also export translations for external editing and import them back.
  </Accordion>

  <Accordion title="What happens to translations if I delete an entity?">
    Translations are tied to the entity. If you delete a catalog item, collection, location, policy document, attribute, or variant, its translations are removed as well.
  </Accordion>

  <Accordion title="Does the system auto-translate content?">
    No. All translations are manually managed. You write or import the translated text for each field and language.
  </Accordion>
</AccordionGroup>

## Related Concepts

<CardGroup cols={2}>
  <Card title="Listings" icon="tag" href="/docs/concepts/catalog/listings">
    Catalog items whose names, descriptions, and custom sections you translate
  </Card>

  <Card title="Attributes" icon="sliders" href="/docs/concepts/admin/attributes">
    Custom attributes with translatable names, descriptions, and option labels
  </Card>

  <Card title="Variants" icon="copy" href="/docs/concepts/catalog/variants">
    Listing variants with translatable names and values
  </Card>

  <Card title="Localization" icon="globe" href="/docs/concepts/admin/localization">
    System string overrides and storefront language configuration
  </Card>

  <Card title="Settings - Translations" icon="gear" href="/docs/settings/translations">
    The translations settings UI
  </Card>

  <Card title="Theme Editor" icon="paintbrush" href="/docs/sales-channels/online-store/theme-editor/overview">
    Translate storefront content and override system strings
  </Card>

  <Card title="Settings - Emails" icon="gear" href="/docs/settings/emails">
    Email templates with per-language content and language routing
  </Card>

  <Card title="Settings - Documents" icon="gear" href="/docs/settings/documents">
    Document templates with per-language content
  </Card>
</CardGroup>
