Content
Languages and translations
Add website languages, prepare translations and understand which draft, revision, links and publication you are changing.
Add a website language
GroCMS starts with English (en). With one configured language, translation controls and language filters stay hidden. An administrator can open Settings → Languages to add another language. This configures website content; administration labels remain English.
If website languages cannot load, use the displayed Try again action. Lists remain readable, but creation waits and the visual preview waits for its writing direction; GroCMS does not silently replace a selected language with English. A failed refresh retains previously confirmed languages and an already-open canvas. Existing resource drafts keep their identity and can still be saved.
- Enter a standard code such as fr, af, ar or pt-BR, a visible language name, and Left to right or Right to left.
- Select Add language. Configuration is saved immediately; it does not translate, create or publish any entries.
- Open an existing entry and use Translations, or choose the language when creating a separate new entry.
The screen is add-only: the existing default language is fixed, and there are no rename, direction-change or removal controls. Re-adding an existing code does not update it. An existing route or redirect under the new prefix blocks configuration; arrange a deliberate URL move before claiming that prefix. The current limit of 30 configured languages, including English, is a configuration bound, not a tested content or traffic capacity.
Sources: Language configuration and prefix validation; Administrator language setup; Localization implementation and operations guide.
Find an entry and switch its language
Use the Language filter in a content list to find a particular language; All languages shows accessible entries together with their language and status. Search, status, ownership, page and language stay in the URL and in the editor's return link. A new independent entry defaults to the list language, or English from All languages. Use Translations on an existing entry when you want to connect a new version to that entry.
Language appears in both the ordinary editor and the full-window Visual editor. It opens an existing translation as a different entry. If the source has unsaved changes, choose Stay, Save and leave, or Discard unsaved changes and leave. Save and leave waits for the latest save and keeps you in place if a field, recovery prompt, conflict or request failure needs attention. Discard cannot undo a save that the server already accepted.
The destination has its own draft and visual-editor history. Autosave and temporary browser-tab recovery stay attached to the original resource ID, not the group of translations. Recovery is not a durable backup or a cross-device translation workspace.
Sources: Resource editor sessions and recovery; Translation editing controls; Localization implementation and operations guide.
Copy a saved revision, then translate it
- Finish and save the source entry. Resolve recovery, unfinished fields and save conflicts before copying.
- Open Translations, select a missing language and choose Create [language] translation. Your role must allow editing the source and creating that resource kind.
- GroCMS opens a new draft copied from the exact saved source revision. Translate the title, body, excerpt, SEO, block text, captions and other authored values.
- Review its slug, links and dependencies. Save, preview, then publish or submit this language version for review.
Creation pins the current saved source revision. If someone saves a newer source first, reload and review before retrying. If the destination version already exists, it is opened without overwriting it. A translation in Trash must be restored instead of duplicated.
Sources: Translation editing controls; Translation creation and revision ownership; Typed translation reference remapping.
Prepare related content before publication
When copying, GroCMS replaces typed references with corresponding accessible destination-language resources where they already exist. Required same-language relationships still apply. Translate parent Pages or hierarchical terms before their children, and categories/tags before the content that uses them. Translate the home Page before its Site settings, then publish the Page before publishing settings that select it.
Templates, shared sections, menus, brand, settings and profiles can have translations too. A template, shared section, menu or profile reference can intentionally remain shared when a counterpart is unavailable, subject to normal publication rules. Public rendering can reuse eligible default-language brand/template design. This does not make an unavailable translated article fall back to the English article.
Images retain their IDs, bytes and shared media-library metadata. Translate a block's own alternative text or caption where that control is provided; use a separate media asset if global library metadata must differ by language. Literal button URLs, HTML links and manually entered menu addresses remain exactly as authored; /contact does not automatically become /fr/contact. Creating a related translation later does not rewrite the references already saved in another entry. Inspect the actual navigation and content before publication.
Sources: Translation creation and revision ownership; Typed translation reference remapping; Localized public rendering and search.
Review, schedule and restore one language at a time
Each language variant has an immutable resource ID and separate working/published revision pointers. The translation group connects the variants; it is not an editing target. Revision rows explicitly carry the language and ownership constraints keep pointers attached to matching revisions.
Readable revision comparisons and Restore revision apply to the current language only. Restoring creates another draft in that language. Review submissions and schedules keep the exact resource and saved revision: approving or scheduling French does not approve or schedule English. Subsequent draft edits do not retarget a schedule.
Publish dependencies in a useful order and resolve the specific error if publication is blocked. When setting up a translated home, publish its Page, select that Page in the translated Site settings, publish those settings, then check the language root and its menus.
Sources: Translation creation and revision ownership; Resource editor sessions and recovery; Locale variant migration.
Check URLs, direction and search
English keeps existing URLs such as /, /about and /journal. Additional languages use lower-case prefixes such as /fr, /fr/about, /ar and /pt-br. Each variant can use its own slug. Public language alternatives use eligible published versions; drafts and private versions are not anonymous alternatives.
The public page and visual preview use the configured content language and direction, including RTL. Administration and some built-in fallback public labels remain English, and documentation keeps its authored language. Check the result with real translated content rather than assuming all interface text changes with the language.
Search and listings select the requested content language. English uses PostgreSQL English text search; other languages use the simple configuration without language-specific stemming. Test your real languages and queries before making search-quality promises. The default feed is /feed.xml; a language feed uses a query such as /feed.xml?locale=fr.
Sources: Language configuration and prefix validation; Localized public rendering and search; Localization implementation and operations guide.
Upgrade and exchange content deliberately
An existing installation needs the locale migration and a matching release for every web process, worker, setup/seed command, importer and other content producer. Take a verified database-and-media backup, stop all producers that share that database, migrate using the recorded installation procedure and verify before resuming. Existing content becomes English without changing its text or existing English URLs. A failed migration is not a reason to reset volumes or restart incompatible older producer code.
The administrator native content export is gcms-native version 3 and retains language configuration, resource/group identities and revision locales. It excludes authentication data and media bytes and is not a complete recovery backup. The separate grocms-site-v1 installation manifest remains default-language only and rejects resource-level locale/translationGroupId fields. Create translations through the CMS after initializing that manifest. No universal importer or automatic multilingual manifest installer is implied.
Sources: Localization implementation and operations guide; Locale variant migration; Default-language site manifest contract.