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- Germanen- English
Tier 2 languages
es- Spanishfr- Frenchpl- 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
- Default translations are loaded from
frontend/src/locales/<LOCALE_CODE>/messages.po - Custom theme translations are loaded from
frontend/public/custom-theme/<THEME_NAME>/locales/<LOCALE_CODE>/messages.po - Custom translations take precedence - they override default translations for matching IDs
- Merged at runtime - the system combines both sets of translations dynamically
Creating Custom Theme Translations
To override translations for your theme:
-
Create the directory structure:
frontend/public/custom-theme/<THEME_NAME>/locales/<LOCALE_CODE>/ -
Add your custom translations in
messages.pofiles -
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:
- The custom theme directory must be present during the frontend build process
- Both
.pofiles should exist - The theme name must match the
VITE_CUSTOMER_NAMEenvironment variable or backend configuration
See Also
- Theming - Complete theming guide including custom translations
- Configuration Reference - Backend configuration options