
Localization shapes the entire experience for a specific market, rather than just converting text into another language. In Contentful, that difference shows up in how you structure content types and entries.
Contentful documents four main localization patterns/approaches – field‑level, entry‑level, content type, and space‑level – but stops short of telling you which one to pick, or when to graduate from one to another. Choosing the wrong pattern early can lock your teams into brittle workflows, duplicated content, and expensive rebuilds once you add your third market or second channel.
This guide walks through each strategy, how locales and fallbacks work in the API, and the trade‑offs that matter for your publishing model. We’ll also show you how combining Contentful with an AI website translation tool like Weglot gives you a faster path to a multilingual site.

In Contentful, everything starts with locales – each one is a language‑region pair like en-US or de-AT, and every space has a single default locale that the Content Delivery API (CDA) returns when you don’t specify one. Locales live at the environment level, and you can have up to 500 of them per environment, subject to your plan.
You control localization at the field level inside a content type. Any field marked localized: true stores separate values per locale, while unlocalized fields keep a single shared value across all languages. This is ideal for things like SKUs, IDs, or global dates. You can edit and add locales through the Content Management API, including custom codes and names, so you’re not locked into a strict ISO list as long as each code is unique.
When you configure a locale, the ‘Allow empty fields for this locale’ option lets editors publish even if some localized fields don’t have values yet, which is handy when different markets move at different speeds. Missing values can then fall back through your custom locale hierarchy, so you decide whether de-CH should inherit from de-DE, en-US, or nothing at all.
Contentful gives you four main strategies for multilingual architecture – field‑level, entry‑level, content type‑level, and space‑level localization. Each one solves a different problem around governance, publishing independence, and how strictly you want to separate markets.
Here’s a high‑level comparison:
Field‑level localization keeps all languages in a single entry. Localized fields store separate values per locale, and you still get locale‑based publishing, fallbacks, and role‑based governance. For most teams, this is the best starting point, because it keeps the model tidy while still letting you publish per locale when you need to.
Entry‑level localization uses a ‘global wrapper’ entry that links to separate localized entries. This fits when regional teams need more autonomy, slightly different content, or their own approval flows. You keep fallback behavior on the reference field, but you don’t get strict locale‑scoped permissions, because translators are editing different entries rather than different locales of one entry.
Content type‑level localization duplicates content types per locale inside the same space, while space‑level localization duplicates the whole content model into separate spaces for each locale or region.
Both of these give you strong separation and fully independent publishing, but you lose automatic fallbacks and take on constant schema and content sync work. We’d only recommend these for strict compliance or for markets where legal, product, or brand content must be completely different from your primary site.
“Weglot sidesteps all of these modeling trade‑offs by translating the rendered frontend through a JavaScript snippet (or server‑side where supported), so you can launch a multilingual Contentful site quickly without redesigning your content model first.”
– Christophe Garcia, Director of Support at Weglot
{{quote-cta-banner}}
Adding a locale in Contentful is a 3‑step job – create it, wire fallbacks, then enable it on fields. You add the locale via the Content Management API (or the web app), set its fallbackCode to build a chain like de-CH → de-AT → de-DE, and finally mark the fields you want as localized: true so they can store per‑locale values. That chain defines how the CDA walks up to a parent locale when no value is defined.
The subtle part is how Contentful decides a value is missing. The CDA treats 3 field states differently:
You can only create those null or "" states programmatically through the CMA – the web app prevents editors from saving them – which is why this bug often hides in migration scripts and custom integrations.
The ‘Allow required fields to be empty for this locale’ checkbox is about validation. It lets editors publish entries where some localized fields genuinely have no value yet, but the CDA will still follow the same fallback rules when it encounters those unset locales at read time.
To target a specific language in your frontend, you use the locale query parameter with the Content Delivery API.
Example: locale=de-AT returns fields in Austrian-German with your configured fallback chain, while locale=* returns all localized variants of each field in a single payload.
Behind the scenes, the Sync API always behaves like the wildcard mode and includes all locales regardless of which locale you request, so downstream systems need to handle the full localization set.
Locale‑based publishing is an environment‑level toggle, available only on specific paid plans, that lets editors publish or unpublish one or more locales of an entry independently. It works for manual publishing in the entry editor, but scheduled publishing and releases still operate at the whole‑entry level.
With localized workflows, workflow steps and tasks can now target individual locales, so when locale‑based publishing is enabled, a blocked state on the ‘French’ locale no longer prevents you from publishing the ‘English’ locale on its own.
Translator roles can be restricted per locale for field‑level localization, but with entry‑level localization you often need content‑permissions workarounds, since translators technically edit different entries rather than different locales of the same entry.
Per‑locale publishing doesn’t change how the APIs behave, it changes what content is eligible to be delivered. Once enabled, you can see draft/published/changed status per locale in the UI, but the CDA and Sync API will still deliver whichever localized versions are currently published for the locales you request.

Contentful gives you two broad options for translation:
Here’s how the main options compare:
In summary:
As Contentful only ever holds the source language, Weglot makes for faster launches, less pressure on your content model, and simpler governance all round.
{{ai-banner}}
Choose a Contentful strategy that matches how your teams actually work. Use field‑level localization for mostly shared content. Use entry‑level, content type‑level, or even space‑level only when regions need real editorial freedom, or when compliance and very different regional content make a shared model hard to maintain.
Once that’s in place, the next decision is where translations live. If Contentful is your shared hub for mobile, APIs, and multiple frontends, you can keep every language inside your entries.
If you mainly need a Contentful‑powered website live in several languages, a frontend translation layer is usually faster and far lighter on architecture. Weglot fits that approach especially well, because it translates your rendered site, creates language‑specific URLs, and handles multilingual SEO without changing your existing content model.
Ready to see how that looks on your own stack? Start a free 14‑day Weglot trial today and launch a multilingual Contentful site in minutes.
The best way to understand the power of Weglot is to see it for yourself. Test it for free and without any engagement.
A demo website is available in your dashboard if you’re not ready to connect your website yet.