I’m planning to manage Chinese and English content in Busa CMS, but not every article will have both versions. When a visitor switches languages, how should the site decide whether to open a translated article, return to the selected language’s article list, or indicate that no translation is available? Which parts should be represented in the CMS data, and which belong in the website’s routing logic?
What should happen when a CMS article has no version in the selected language?

When a CMS article has no version in the language the visitor selected, treat that as two separate decisions: what the CMS data knows, and what the website route should do.

(Diagram: CMS stores which locales exist; the site chooses fallback, list, or “not available.”)
What belongs in CMS data
For each article (or page), keep:
- One row (or equivalent) per locale you actually authored — language, slug/path, title, body, publish status.
- A clear way to list which locales exist for that piece (same slug family / translation group).
- Optional flags editors care about: “ready to publish,” “draft,” “do not fall back.”
Do not invent a fake translated row just so every language switch always finds something. Missing means missing.
What belongs in website routing
When the visitor asks for /zh/... (or switches language) and there is no zh version:
| Policy | When it fits | What the visitor sees |
|---|---|---|
| Fall back to a default language (often English) | Content must stay readable; you show a “showing English” notice | Same article, different language, with an honest banner |
| Return to that language’s list | You prefer empty over wrong language | Category / index for zh, not an en article |
| Not available (404 or dedicated empty state) | SEO honesty; never advertise a locale you don’t have | Clear “no translation yet” |
SEO tip: only advertise locales that really exist (hreflang / language switcher). Pointing zh at a page that 404s is worse than omitting it.
How to confirm
- Open an article that exists only in English; switch the site to Chinese: you get the policy you chose (fallback + notice, list, or empty) — not a silent wrong page.
- Language switcher / SEO alternates list only locales that have a real version.
- After you add a Chinese row and publish it, the same URL path resolves to Chinese without the fallback notice.
Boundaries
- Putting every supported locale into CMS as empty shells: switcher looks complete, readers get blank pages.
- Always falling back with no notice: visitors think the Chinese page is “finished.”
- Encoding the whole policy only in the CMS with no route logic: you still need the site to choose fallback vs list vs empty.
Example goal for an Agent
Model CMS articles so each language is its own published version. For visitors, if the selected language has no version: show English with a “not translated yet” notice (or return to the language’s article list — pick one and stick to it). Never list a language in the switcher unless that version exists.
That split keeps editors honest about what was written, and keeps the site consistent about what happens on a missing translation.
Your reply
Sign in to join the discussion. Reading is always open; you only need an account to post.
Sign in