> ## 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.

# Localization

> Configure languages, customize storefront UI text, and serve translated content to customers in their preferred language.

TWICE Commerce supports multi-language storefronts out of the box. You configure which languages your storefront offers, set a default language, and optionally override any UI string — buttons, labels, headings, and checkout copy — on a per-language basis. Content translations (product names, descriptions) are handled separately through the translations system.

## How it works

Localization in TWICE has two layers:

| Layer                    | What it covers                                                                                                                                                                                                                                                                      | Where you manage it                                                                                                                                    |
| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System strings**       | UI text baked into the storefront and checkout — buttons, labels, headings, form fields, error messages                                                                                                                                                                             | **Settings > Translations** (Online store / Commerce / Checkout scopes)                                                                                |
| **Content translations** | Merchant-authored text — listing names, descriptions, and custom section content; collection titles; location names; policy document names; attribute names, descriptions, and option labels; variant names; storefront content; checkout step descriptions; navigation item labels | **Settings > Translations** (Listings / Collections / Locations / Policy documents / Attributes / Variants scopes) + online store and checkout editors |

System strings ship with default translations for all 24 supported languages. You override individual strings when you want to match your brand voice or clarify terminology for your customers. Content translations are always manually managed — you write the translated text for each field and language.

## Language configuration

### Default language

Every organization has a **default language**. This is the language your storefront renders when no other preference applies, and the baseline that content translations are compared against. It defaults to English but can be changed in **Settings > Translations**.

### Enabled languages

Enable additional languages to make your storefront available in those languages. 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 preserves all existing overrides and content translations. They reappear if you re-enable the language.

## System string overrides

System strings are the built-in UI text on your storefront and checkout. Every string ships with a default translation maintained by TWICE Commerce. You can override any of these strings per language — including your default language — to match your brand voice.

### Scopes

Overrides are organized into three scopes:

| Scope            | Covers                                                                  |
| :--------------- | :---------------------------------------------------------------------- |
| **Online store** | Storefront UI — navigation, product pages, cart, search, filters        |
| **Commerce**     | Shared components — product cards, availability labels, pricing display |
| **Checkout**     | Checkout flow — form labels, payment steps, order confirmation          |

Each scope is edited independently. Checkout overrides can also vary per checkout configuration if you run multiple checkout flows.

### Override format

Each override targets a specific string using a namespaced key. The key combines the scope namespace and a dotted path that identifies the string:

<CodeGroup>
  ```text Override key format theme={null}
  <namespace>:<dotted.path>

  storefront:cart.checkout
  checkout:contact.email
  commerce:productCard.bookButton
  ```

  ```json Example overrides (Finnish) theme={null}
  {
    "storefront:cart.checkout": "Siirry kassalle",
    "storefront:cart.continueShopping": "Jatka ostoksia",
    "checkout:contact.email": "Sahkopostiosoite",
    "commerce:productCard.bookButton": "Varaa nyt"
  }
  ```
</CodeGroup>

### Editing overrides

Open **Settings > Translations**, select a language, and choose a scope from the sidebar (Online store, Commerce, or Checkout). The default language appears alongside your other enabled languages — you can override system strings in any language, not just non-default ones.

The editor shows each string with:

* **Key** — the string identifier
* **Default** — the built-in translation maintained by TWICE Commerce
* **Override** — your custom text (empty if not overridden)

Type your override in the Override column. Save to apply. To revert a string to its default, clear the override field.

<Note>Default-language overrides are useful for matching your brand voice without changing your primary language setting. For example, you can rename "Add to cart" to "Reserve now" in your default language.</Note>

### Fallback behavior

When a customer views your storefront, the system resolves each string in this order:

1. **Merchant override** for the customer's language — if you set one, it wins
2. **Default translation** — the built-in translation maintained by TWICE Commerce
3. **Default language value** — if no translation exists for the requested language, the default language value is used

Customers always see text. A missing override never produces an empty string.

## Storefront language selector

When you enable more than one language, the storefront displays a **language selector** in the top bar — a thin strip above the announcement bar and header. Customers click it to switch languages without leaving the page.

The selector shows each language by its **native name** (e.g. "Deutsch" for German, "Suomi" for Finnish). The active language is highlighted in the dropdown. Switching languages updates the page content, system strings, and any translated merchant content immediately.

The language selector does not appear on checkout or order link pages. If only one language is enabled, the top bar is hidden entirely (unless the store selector is also present).

### Language resolution

When a customer visits your storefront, the system determines which language to render:

1. **`?lang=` parameter** — the language selector sets this on every switch. You can also use it to link directly to a specific language version of a page.
2. **Default language** — your organization's default language
3. **First enabled language** — the first language in your enabled languages list
4. **Fallback** — English

The storefront loads the appropriate language bundle, applies any merchant overrides on top, and renders the page. Language bundles for non-default languages are loaded on demand to keep initial page loads fast.

The `?lang=` parameter is preserved across page navigations, so customers stay in their chosen language as they browse.

## Transactional emails

Transactional emails (order confirmations, shipping notifications) are sent in the recipient's preferred language when that language is in your enabled languages list. If the recipient's language is not enabled, emails fall back to your default language.

## FAQs

<AccordionGroup>
  <Accordion title="What is the difference between system strings and content translations?">
    System strings are the built-in UI text that ships with your storefront — button labels, headings, form fields, error messages. Content translations are for your own content — listing names, descriptions, custom section content, collection titles, location names, policy document names, attribute names, descriptions, and option labels, variant names, storefront content, checkout step descriptions, and navigation item labels. Content translations are managed in **Settings > Translations** and in the online store and checkout editors.
  </Accordion>

  <Accordion title="Do I need to translate system strings myself?">
    No. System strings ship with default translations for all 24 supported languages. You only override individual strings when you want to customize the wording — in any language, including your default language.
  </Accordion>

  <Accordion title="Can different checkout configurations have different overrides?">
    Yes. Each checkout configuration can have its own set of system string overrides. This is useful if you run different checkout flows for different use cases (e.g. rental vs. purchase).
  </Accordion>

  <Accordion title="What happens if I disable a language?">
    Disabling a language removes it from your storefront. All overrides and content translations for that language are preserved and reappear if you re-enable it.
  </Accordion>

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

  <Accordion title="Can I export and import translations?">
    Yes. The translations editor supports bulk export and import for both content translations and system string overrides.
  </Accordion>
</AccordionGroup>

## Related Concepts

<CardGroup cols={2}>
  <Card title="Multi-Language Content" icon="language" href="/docs/concepts/admin/translations">
    Translate listings, collections, locations, attributes, and variants
  </Card>

  <Card title="Online Store" icon="store" href="/docs/concepts/sales-channels/online-store">
    Storefront architecture, themes, and multi-store support
  </Card>

  <Card title="Settings - Translations" icon="gear" href="/docs/settings/translations">
    Step-by-step guide to the translations settings UI
  </Card>
</CardGroup>
