Localization (i18n)
Edit locales your site already declares — with RTL overlay support.
Nexus is locale-source-agnostic. A region's stable id is its identity across every language, so a translation is just another value under the same id.
Declare locales in config
Locales must come from your project — Nexus does not invent languages in the editor UI.
export default defineConfig({
defaultLocale: "en",
locales: ["en", "ar"],
});The editor language menu only lists these codes. To add French, update
nexus.config.ts (and your app's i18n routing), regenerate if needed, then
switch in the overlay.
Editing a translation
- Open the language menu in the bottom toolbar (Pro+ when locales are enabled).
- Switch to a declared locale (RTL locales show an RTL badge).
- Edit regions inline; the overlay chrome mirrors for RTL (
dir="rtl"). - Prefer this locale only when saving translations; use all locales for shared brand strings.
How identity works
{
"hero.section0-h11": {
"value": {
"en": "A CMS that adapts to your frontend",
"ar": "نظام إدارة محتوى يتكيّف مع واجهتك الأمامية"
}
}
}When a locale has no value, Nexus falls back to the default locale only.
RTL
isRtlLocale / localeDirection from @nexus-cms/core drive:
dir/langon the host document (runtime)- Overlay shadow-root direction so toolbars and panels mirror correctly
You still need your site styles to support RTL for content layout — Nexus does not rewrite your CSS.