Contensio logo

Managing Languages

Add languages, set the default, control visibility, and understand how multilingual content works in Contensio.

Contensio is multilingual by design — translations are baked into the schema, not bolted on as a plugin. Every content item, taxonomy term, and field value can have a version per language.

The default language

One language is always designated as the default. It is the primary authoring language and the one served to frontend visitors. Content items are always stored against a language, and the default language is used when no other matches.

The default language is set during installation. You can change it at any time — see Changing the default language.

Language statuses

Each language has one of three statuses:

Status Editor visibility Frontend visibility
Active Shown in the language tab switcher in the editor Served to frontend visitors
Inactive Shown in the editor — editors can add translations Not served to frontend visitors
Disabled Hidden from the editor entirely Not served

Use Inactive when you're preparing translations before a language goes live. The content is editable in the admin but visitors don't see it yet.

Adding a language

  1. Go to Configuration → Languages and click Add Language.
  2. Fill in:
    • Code — the BCP 47 language tag, e.g. en, ro, de, fr, pt-BR. Maximum 5 characters.
    • Name — the human-readable name shown in the admin, e.g. English, Romanian.
    • DirectionLTR (left-to-right) or RTL (right-to-left, for Arabic, Hebrew, etc.).
    • StatusActive, Inactive, or Disabled.
  3. Save. The language immediately appears in the editor's tab switcher.

Seven languages are pre-seeded during installation: en, ro, de, es, fr, it, pt. If you need one of these you can add it with the exact code to match the seed.

Changing the default language

On the Languages list, click Set as default next to any active language. The previous default language stays active — it just loses the default flag. The default language cannot be set to Inactive or Disabled while it holds the default flag.

Translating content

When more than one language exists, every content edit screen (pages, posts, custom types) shows language tabs at the top of the title/body area. Switch tabs to enter the translation for each language.

Each language has its own:

  • Title and slug
  • Body (block content)
  • Excerpt
  • SEO fields (meta title, meta description, OG image)
  • Custom field values (for fields marked as Translatable)

Non-translatable custom field values are shared across all languages.

Editing and deleting languages

Click any language row on the Languages list to edit its name, direction, or status. The language code cannot be changed after creation.

Deleting a language is only possible when:

  1. It is not the default language.
  2. It has no content translations stored against it.

If the language has translations, reassign or delete the content first, then delete the language.

Frontend language routing

The built-in frontend (FrontendController) serves content in the default language only. If you need per-language URL routing (e.g. /en/about and /ro/despre) you'll need to implement locale-aware routing in your application or use a plugin.

The default theme is locale-aware for its own UI strings via Laravel's translation system — it will pick up resources/lang/{code}/ translations if present in your app.