i18n for MODX 3

Multilingual architecture for MODX — without contexts.

Centralize translations in the database, render content through keys, and ship clean language routing (/en/, /ru/, …) with a default fallback to /. Built for production workflows and large sites.

MODX 3.x+ PHP 7.4+ ionCube Loader ext-sodium

Key capabilities

A single translation layer for templates, chunks and UI strings — with routing and maintenance tooling.

See usage examples

Key-based translations

Define keys manually or leave empty for auto-generation. Use groups (manual or default).

Built-in routing

Clean URLs like /en/, /ru/ with default fallback to /.

Placeholders

Replace {{name}} at render time via JSON placeholders.

Usage tracking

Track where keys are used, rebuild usage index, and reduce translation debt.

Routing plugin

Minimal setup delivers production-ready multilingual URL structure, redirects and state persistence.

URL behavior i18nLangRoute

Runtime rules for language prefixes and fallbacks.

  • Language prefixes /en/, /ru/, /pl/ and any ISO 3166-1 alpha-2 you enable.
  • Default fallback to “/” If the visitor uses the default language, URLs remain clean without a prefix.
  • State persistence Selected language is kept in cookie/session for consistent navigation.
  • SEO-friendly redirects Canonical behavior (e.g. slash normalization) and stable alternates.
Setup checklist MODX

For correct routing you typically only need the standard MODX friendly URLs setup:

  • Enable friendly URLs System Settings: friendly_urls = 1
  • Activate .htaccess Rename ht.access.htaccess in the site root (Apache).
  • Enable the plugin Turn on i18nLangRoute in System Settings or Plugin Manager.
  • Optional toggles Disable routing plugin and/or floating widget via System Settings if required.

How it works

Create a key once, store translations per language, render anywhere. Refactor safely.

Manager workflow CMP
  • Create a key Set site.title (or leave empty for auto-generation). Choose a group or use default.
  • Add translations Fill values per language in tabbed UI. Missing values fall back to default language or key.
  • Maintain at scale When renaming keys/groups, i18n updates usage references across content to avoid stale artifacts.
Snippet patterns templates
[[!i18nKey? &key=`site.title` ]] [[!i18nKey? &key=`gren.greeting` &placeholders=`{"name":"Anna"}` ]] [[!i18nKey? &key=`manual.name` &lang=`en` ]] [[!i18nKey? &key=`manual.name` &lang=`[[!i18nGetLang]]` ]]

Tip: the last pattern is ideal when routing is enabled — visitors get the correct translation automatically.

License & trial

Commercial, per-domain licensing with a 14-day trial and one year of updates & support.

Terms summary commercial
  • Trial 14 days evaluation (full functionality).
  • Per-domain One production domain per license; staging/dev allowed.
  • Updates & support One year included with purchase.
Server requirements runtime
  • ionCube Loader Required for encoded files and licensing runtime.
  • ext-sodium Required for trial issuance and license activation/validation.
  • MODX & PHP MODX 3.x+, PHP 7.4+.

Build multilingual MODX sites without structural overhead.

Centralize translations, enable routing, reduce maintenance costs — and keep your URL structure clean and SEO-friendly.