i18n – Multilingual Translation and Language Routing for MODX
Multilingual translations and language routing for MODX
Creator: Denys Lukashevych (Gren_Studio)
Screenshots
About i18n – Multilingual Translation and Language Routing for MODX
i18n is a key-based multilingual translation component for MODX 3. It stores translations in the database, provides a snippet for output, and includes a built-in language routing plugin for clean URLs like /en/ or /ru/. Designed for projects that require multilingual support without using MODX contexts.
Information
Released
March 17, 2026
Supported Database
MySQL
License
Commercial
Supported Versions
3.0 - <3.1
Downloads
3
Documentation
i18n – Multilingual Translation and Language Routing for MODX Documentation
Instructions
Installation Instructions
The i18n package is installed using the standard MODX Package Manager.
Installation
- Download the i18n package (ZIP file).
- In the MODX Manager, go to Extras → Installer.
- Click Add New Package, upload the ZIP file, and complete the installation.
Required Configuration
- MODX 3.x+
- PHP 7.4 | PHP 8.1 | PHP 8.2 | PHP 8.3
- Ensure friendly_urls is enabled in MODX System Settings.
- Make sure the standard MODX
.htaccessfile is present in the site root (renameht.accessto.htaccessif needed). - Verify that ionCube Loader and the PHP sodium extension are installed and enabled on the server.
Language Routing (Optional)
- Enable the i18nLangRoute plugin in the MODX Manager.
- The plugin provides automatic language routing using URL prefixes such as
/en/or/ru/. - The default language is served from the root URL (
/) with automatic fallback handling.
Initial Usage
- Open Extras → i18n in the MODX Manager.
- Create a new translation key and define values for the required languages.
- Use the
[[!i18nKey]]snippet in templates, chunks, or resources to output translations.
Trial Mode
After the initial check-in process, a 14-day trial mode is automatically activated. A commercial license is required for continued production use after the trial period.
New in 1.2.0-pl0
1.2.0 (pl)
Added
- Bulk i18n resolution (single-pass translation instead of per-item snippet calls).
- Canonical runtime option i18n.current_lang for consistent language access across module.
Improved
- Language detection refactored: URL is now the single source of truth.
- Unified language persistence (cookie + session + runtime option).
- Removed double cookie writes causing inconsistent language state.
- Fixed language race condition when switching from non-default to default language.
- Reduced redundant DB queries in menu + i18n resolution.
Fixed
- Duplicate Set-Cookie header for language cookie.
- i18n Manager button translation fallback issue after interaction.
- Incorrect cache invalidation timing in manager settings.
- Fixed uninstall cleanup (removed orphaned static plugins/snippets to prevent errors).
Changed
- i18nLangRoute is now the primary language initialization handler.
- i18nInitLang responsibility deprecated.
- Cookie configuration unified (HttpOnly + SameSite=Lax).