Per-field localisation
Mark any field translatable and the editor shows a clean tab per locale. Structure stays identical across languages.
Per-field localisation with language fallbacks and a translation workflow. One content model, every locale, resolved through the same API your themes and apps already use.
Every capability integrates with permissions, validation, migrations and the headless API. Nothing bolted on the side.
Mark any field translatable and the editor shows a clean tab per locale. Structure stays identical across languages.
Untranslated fields fall back to a default locale automatically, so a page is never half-empty.
See at a glance what is translated, what is stale and what is missing, per locale.
Request any locale over the public REST API with a single parameter. The shape never changes.
Grant translators access to the locales they own, and nothing else.
Locale is part of the cache key, so every language stays as fast as the default.
Mark a field translatable in the Post Types builder and Modular handles the rest: per-locale storage, a tabbed editor, fallbacks and a locale-aware API.
One post type, many locales. You do not duplicate models per language.
Default-locale values fill any gap automatically.
Track translation status alongside your publishing workflow.
{
"fields": [
{ "name": "title", "type": "text", "translatable": true },
{ "name": "body", "type": "wysiwyg", "translatable": true }
]
}
// locales are configured in the admin Modules screen{
"id": 142,
"locale": "de",
"title": "Feldnotizen, Nr. 7",
"slug": "feldnotizen-7",
"_fallback": [ "excerpt" ] // fields served from default locale
}A locale switcher on every translatable field, with status badges.
Per-field and per-locale fallback chains you control.
Coverage per collection and locale, with missing-string reports.
Theme routes and the API both resolve by locale.
Full documentation. Installation, configuration, every option and the API reference live in the Translation module docs. Building your own instead? Read building a module.
Drop it in public/modules, activate it in the admin Modules screen, and its migrations run on activation. Reviewed, supported, and free to self-host.