When launching a website in multiple languages, the common problems are not about whether translations exist. Instead, after an English product page is updated, no one knows what needs to be synchronized on the German page; users switch languages but are sent back to the homepage; or translations that have been taken offline still appear in the language navigation. To manage these relationships, use stable content group identifiers to link each language version, then record the language, region, publication status, and source version separately, rather than guessing which versions correspond based on titles or URLs.
When evaluating a Headless CMS for global websites solution, you need to validate the content model, translation workflow, and frontend output together. The fact that a CMS stores these relationships does not mean the website will switch languages correctly or generate hreflang tags; the delivery API must provide enough information for the frontend to identify “which language versions of the same content are publicly accessible.”
English and German descriptions of the same product usually belong to one content group. However, promotional pages targeting different markets with different offers may not simply be translations of one another. Before modeling the content, clarify which pages share the same business identity and which are independent market-specific content. Otherwise, forced pairing may send users to a page that is not equivalent.
We recommend separating business identity from language-version identity to prevent relationships from breaking when language titles or paths change:
Language codes should use the BCP 47 format. Whether to distinguish en-US from en-GB should depend on content differences, not simply on the target country. Market identifiers in business systems can be stored separately and should not be mixed with language fields.

Both models can establish relationships; the difference lies in the granularity of editing and publishing.
Product models and technical specifications can be shared, while titles, descriptions, and SEO copy are maintained by language. Prices, certification details, and delivery terms may need to be overridden by market. Do not translate every field indiscriminately, and do not let “shared fields” obscure genuine regional differences.
Relationships must also cover referenced content. If a German product page references an English downloadable resource, the system should make clear whether it is an approved shared asset or whether a German version is missing. Checking only the main page text is not enough.
The existence of a translation does not mean it is still valid. When the source text changes, compare the source revision recorded for the translation with the current revision, and mark affected versions as “pending review” rather than directly overwriting approved copy. Whether to take an old translation offline should depend on the risk of the changes: wording adjustments and changes to safety parameters should not follow the same policy.
Task callbacks must be idempotent to prevent retries from creating duplicate entries. Preview and public delivery APIs should also be isolated to prevent drafts from being exposed online through language relationship lists.
If a request for a French page returns English content and the frontend still labels it as French, the declared language will not match the page body. The API should return the requested language, the language actually returned, and whether a fallback was triggered; returning only the body text is not enough.
We recommend configuring separate fallback rules for body content, menus, and shared assets. If a menu translation is missing, it can fall back according to product policy. If a full-page translation has not yet been published, however, the system should explicitly choose whether to hide the language option, indicate that the page is unavailable, or redirect to the source-language URL. Do not silently copy source text under a target-language URL.
Cache keys should distinguish at least the content, language, and delivery environment. Otherwise, even with correct database relationships, cache collisions may cause identical pages to be returned for requests in different languages.
Language switching and hreflang should use the same published relationship data. When switching languages, retain the content group rather than simply replacing the language prefix in the path. If the target version does not exist, do not generate a link that merely appears valid.
For acceptance testing, use the same content group to test four scenarios: “source text updated,” “translation unpublished,” “language version taken offline,” and “slug renamed.” Check whether the API, language navigation, cache, and hreflang change in sync. If the relationship appears correct in the admin interface but invalid URLs remain live, investigate the publishing events and frontend build pipeline first, rather than rebuilding the translation relationships.
Related Articles
Related Products


