Skip to Content
DocumentationFeaturesi18n - Internationalization

i18n - Internationalization

Language detection

The language used for the frontend is chosen based on the user’s browser language.

If the user’s browser language is not supported, the default language (English) is used.

Supported languages

The language support is differentiated into two tiers:

  • Tier 1: First-class support. All translations are human-reviewed by a maintainer with native language proficiency.
  • Tier 2: Machine-translated

If a language you are looking for is not currently supported, please reach out to us!

Tier 1 languages

  • de - German
  • en - English

Tier 2 languages

  • es - Spanish
  • fr - French
  • pl - Polish

Translation strings / Theme overrides

The translation strings are stored in messages.po files in the frontend/src/locales/<LOCALE_CODE> directories.

Individual translation strings can also be overridden on a per-theme basis, to allow for customization e.g. to fit organizational branding and communication style.

How Theme Translation Overrides Work

  1. Default translations are loaded from frontend/src/locales/<LOCALE_CODE>/messages.po
  2. Custom theme translations are loaded from frontend/public/custom-theme/<THEME_NAME>/locales/<LOCALE_CODE>/messages.po
  3. Custom translations take precedence - they override default translations for matching IDs
  4. Merged at runtime - the system combines both sets of translations dynamically

Creating Custom Theme Translations

To override translations for your theme:

  1. Create the directory structure:

    frontend/public/custom-theme/<THEME_NAME>/locales/<LOCALE_CODE>/
  2. Add your custom translations in messages.po files

  3. Only override the specific strings you want to customize

Example: Custom Theme Translations

See the Theming documentation for complete examples of custom translation files.

Stable Translation IDs

Only translation strings marked with the #. js-lingui-explicit-id comment have stable IDs and are suitable for overriding.

These IDs are guaranteed to remain consistent across versions. Regular translation strings (without explicit IDs) may change and should not be relied upon for theme customization.

Branding-Specific Translation IDs

Translation IDs with the branding.* prefix are specifically designed for brand customization and have stable IDs.

See the Theming documentation for a complete table of available branding translation IDs with their purposes and default values in different languages.

Build-Time Requirements

For custom theme translations to work:

  1. The custom theme directory must be present during the frontend build process
  2. Both .po files should exist
  3. The theme name must match the VITE_CUSTOMER_NAME environment variable or backend configuration

See Also

Last updated on