A translated content type keeps one record per language. The records that translate each other form a translation group.
In the records table
On a translated type the table gains:
- a locale switcher, to list records in one language;
- a Locales column showing which languages each record exists in;
- locale filters.
The locale menu
In the record’s top bar is a chip naming the open language — EN · English — followed by one dot per configured language, in order, coloured by where the record stands in it: published, published with changes, draft, or a hollow dot where the translation does not exist yet. On a narrow work area the chip shows only the code. Click it to open the locale menu.
At the top — a summary: a search box (Find a locale…), then a line such as 2 of 3 published · 67% (on a type without publishing: translated), with a progress bar.
Below — one row per language:
- the language code and name, and the record’s title in that language;
- its status (Draft, Modified, Published) and when it last went live;
- Add where the translation does not exist yet.
The list scrolls under the summary, so it stays usable with dozens of languages.
To switch language: click a row. The editor opens that language’s record on the same tab you were on. If you have unsaved changes, you are asked first.
A row may be inactive, and says why:
- Not translated — you can’t create translations — your role cannot create records.
- Checking… — still loading.
- Unknown — couldn’t load — use Try again at the top of the menu.
The group’s id is in the properties panel, as Translation group under Details.
Publishing every language at once
For a saved record, More actions (⋯) offers Publish all locales and Unpublish all locales. Each language is checked like a bulk publish; only those that pass go live.
Per-language and shared fields
The form keeps the type’s own order, and each field says beside its label which kind it is:
| Mark | Means |
|---|---|
| A globe | Each language has its own value. |
| All locales | One value for every language. Editing it here changes it everywhere. |
Hover a mark to see what it means. A link field says instead whether its links are Shared across locales, Follows translations or This locale only.
Since 0.12.0 the marks replace the form’s old split into a translated and a shared section.
- Before a save changes a shared field or a link synced across languages, the editor asks once — This also changes 2 other locales — naming the fields and the languages. Choose Save to go ahead. A save that reaches no other row saves without asking.
- A new translation starts with its All locales fields copied from the source language, and a notice says they are still in that language until you translate them.
Editing a shared field edits every translation
Each published translation it rewrites becomes Modified: the live site keeps showing its last published version until it is published again. Use Publish all locales to republish every language that passes in one step.
If the change would leave a published language failing validation — a required shared field cleared, a required synced link removed — that same question says so instead: This leaves a published locale incomplete, naming the languages and what each would be missing. Save anyway goes ahead; those languages keep serving their published version, but cannot be published again until the gap is filled. Cancel leaves everything as it was.
Each rewritten language gets its own entry in version history.
What else a save changes
Since 0.11.0 the question comes with a preview, and it is asked before every write that reaches other rows — a save, a new translation, Restore and Publish this version in version history, and a link edited from the other record’s side. Under What else changes, each row is a card:
- Its heading — German version for a translation of this record, or the other record’s title — with a count of what changes in it (“1 value · 3 links”), and a Published · will show as Modified badge where that applies.
- Values read Now: and After saving:, under the field’s label.
- Links list each record Will be linked: or Will be unlinked:, with its status and a link that opens it in a new tab. The record you are saving reads This record, and one that exists only in this save Not saved yet.
- A linked record with no version in that language yet is named as such — it won’t be linked there.
With one row it opens unfolded; with several they start folded, with Expand all and Collapse all above them.
When the save reaches other records rather than translations, the question is titled This also changes 2 other records. A record whose link was waiting for the translation you are creating — it links this record in another language, and had no German version to point at — is filled in now, and can be unticked: it keeps its gap until its own next save. Every other row is kept in step with this record and cannot be left out; Cancel is the way to not change it.
Creating a translation
- Open the record.
- Open the locale menu and pick a language marked Add.
- Fill in the fields marked with a globe (the All locales ones are already there).
- Save. The new record joins the same translation group.
Links follow the language: where the linked record is itself translated, the German article links to the German tag, not the English one. A link never crosses languages.
Links that are synced across languages are not copied into the new translation’s form: a note at the top of the form says so, and the save fills them in from the record’s other languages, each in this language where it has a translation.
Publishing per language
- Each language is published on its own. The default language does not have to go first.
- The live site reads one language at a time. A missing translation is not filled in from the default language.
Coverage
The Insights dashboard’s Translation coverage card shows how much of each type exists in each language.
Which languages exist
Your developers configure the list of languages. You cannot add one from the admin.
No machine translation, and no translation workflow
There is no machine translation, translation memory, glossary or vendor integration. Ortha CMS AI can draft a translation for you — it asks before applying the change, and cannot publish.
A review rule on the type applies to each language separately.