Per-language values
Variable values are stored translatable — each language gets its own copy of the Value, CSS and Script fields. Translations follow Shopware’s standard inheritance: an empty language falls back to the system default language.
How to translate
Section titled “How to translate”- Open a variable in Settings → Content → Dynamic Variables.
- At the top of the page, switch the language selector to the language you want to translate.
- Edit each value row — type the translated content into the Value field.
- Repeat for every language you support.
Save when you are done. The selector behaves exactly like the rest of Shopware’s translation UI, so anyone used to translating CMS pages or product names will feel at home.
What happens at render time
Section titled “What happens at render time”When the storefront renders a page:
- The plugin determines the current storefront language.
- For each value row that matches the current sales channel, it looks up the translation for that language.
- If the translation is empty, it falls back to the system default language.
- The resolved string replaces the placeholder.
- Translate all rows. If you have both a global row and a channel-specific row, translate both to avoid mixed-language storefronts.
- Inline HTML is preserved. You can keep different HTML structures per language (e.g. for languages with longer words that need line breaks).
- CSS and Script are translatable too — handy when a campaign uses a language-specific image or a different font for an alphabet.
Fallback example
Section titled “Fallback example”You have a variable promotionText with these values:
| Sales Channel | English | German | French |
|---|---|---|---|
| (global) | Free shipping | Kostenloser Versand | (empty) |
A French storefront falls back to the system default language. If the system default is English, French shoppers see Free shipping. Translate French explicitly to control what they see.