Working with languages
How translations work in Payload, how to add a translation, and what happens if you skip one.
If your storefront supports more than one language, most of the text content in Payload is localized — meaning each language has its own version of a field, and you can edit them independently.
Which fields are localized
Text-type fields that customers read on the website are usually localized — page titles, headings, button labels, navigation menus, rich-text body content, and so on.
Fields that aren't customer-visible (internal titles, SKUs, slugs in some cases, admin-only flags) are usually not localized — they're the same across all languages.
You'll know a field is localized because it shows a language switcher (a flag or code like en-GB / nl-NL) near the field, and the value changes when you switch.
Switching language
- At the top of the edit form there's a locale selector — a dropdown or row of flags showing the supported languages.
- Click a language to switch. The form refreshes, and every localized field shows that language's version.
- Edit, then save. Each language saves independently — saving Dutch doesn't touch the English version.
Adding a translation
When you create a new page, the default locale (usually en-GB) is filled in. The other locales are empty.
- Fill in the default-locale fields and save.
- Switch the locale selector to the next language.
- The form reopens with the same page but empty translations.
- Fill in the translations and save.
- Repeat for every supported language.
Every language has its own save — there is no single "save all translations" button. This is deliberate: it means you can publish an English update without waiting for Dutch to be translated.
What happens if a translation is missing
If a field is empty for a given language, Payload falls back to the default locale at display time. So a Dutch visitor would see an English value for that field.
- For small things (a missing button label), this is usually fine.
- For large things (a whole blog post body), it looks like a broken translation.
If you can't translate something immediately, you can still save the default-locale version — it won't block you. But keep a list of untranslated items so someone can come back and finish them.
Supported languages
Your site's supported languages are configured per-tenant. Common setups:
- en-GB only — a single-language site.
- en-GB + nl-NL — English and Dutch (typical for Benelux tenants).
If you need a new language added, contact your Flowtech account manager. Adding a language is a platform-level change, not something you can do from the Payload admin.
The slug field is often not localized
Most sites keep URLs the same across languages — e.g. /about-us works for English and Dutch visitors, and the content on the page is translated but the URL isn't. If your tenant is set up this way, the Slug field has no locale switcher.
Some tenants translate slugs too (e.g. /over-ons for Dutch). In that case the Slug field will have the switcher.
Don't assume — check whether the switcher is there before translating a URL.
Tips
- Translate in context. Edit with the live preview open so you can see the translation in the layout it'll appear in. A literal translation often reads awkwardly once it's in place.
- Watch field length. Some languages use more characters than others for the same message. A button label that fits in English might wrap or overflow in German.
- Handle images separately. If an image contains text (e.g. a banner with "Autumn Sale" baked in), each language needs its own image. Upload a localized version and swap it in the media field while editing that locale.
- Don't over-translate internal fields. SEO titles, meta descriptions, and button labels need translating. Admin-only fields and internal names don't.