Duolangue — Lightweight Bilingual
Most sites are not translated into ten languages — they are translated into two. Duolangue is built for that exact case: one site, two languages, no bloat. No custom database tables, no settings maze, no machine-translation upsell baked into checkout. Duolangue gives you a fully working bilingual si
Most sites are not translated into ten languages — they are translated into two. Duolangue is built for that exact case: one site, two languages, no bloat. No custom database tables, no settings maze, no machine-translation upsell baked into checkout.
Duolangue gives you a fully working bilingual site for pages, posts and custom post types:
- Directory-based routing — your default language at the root, the second language under its own directory (e.g. /fr/ ). A ?lang= parameter mode is available as a fallback.
- Translated URL bases — translate the URL base of posts and custom post types (e.g. /projects/ → /fr/projets/ ).
- Manual translation linking — link any page, post or custom post type entry to its translation from the editor (the “Duolangue — Language” panel in Gutenberg, or a metabox in the classic editor), or unlink at any time. Nothing is ever deleted.
- Language switcher — a [duolangue_switcher] shortcode plus duolangue_language_switcher() / duolangue_other_lang_url() template functions for themes, page builders and code blocks.
- Automatic hreflang — correct alternate + x-default tags on every page, out of the box.
- Menus follow the visitor’s language — menu items pointing at a linked page or post are swapped to its translation automatically, and a language link can be appended to the menus you choose.
- ACF-aware — Post Object, Page Link and Relationship pickers only list content in the language being edited.
- Native admin integration — a Language column, per-language tabs and bulk “assign language” actions on every list screen.
- Admin language toggle — switch the admin between your two site languages (global setting plus an optional per-user toggle). The plugin’s own strings are translated through translate.wordpress.org.
- Page-builder friendly — builder template post types (Oxygen, Bricks, Breakdance, Elementor, Divi, Beaver Builder) are left untouched.
Every switcher link points to the linked translation of the current page when it exists and is published; otherwise it falls back to the home page of the target language .