DLE Multi-Language

A multilingual module for DLE: AI translation of news one by one or in bulk (GPT, Claude, Gemini, DeepSeek), SEO and hreflang — without duplicating the engine.
Version 2.8.1 PHP 8.0 — 8.5 DLE 19.0 — 21.0 Documentation Open demo

Full multilingual support for DLE — without duplicating the engine

DLE Multi-Language is a professional solution that makes your site truly multilingual within a single DLE installation, with one database and full support for search engine SEO requirements.

Add an unlimited number of languages, translate content by hand or with artificial intelligence (GPT, Claude, Gemini, DeepSeek), and give developers a flexible set of template tags for building any multilingual interface.

Features

1. URL structure and routing

  • Prefix-based URLs — every language gets its own prefix: site.com/en/, site.com/es/, site.com/de/. The default language lives on the root domain without a prefix, which matters for SEO.
  • Automatic URL rewriting — every internal link in the template gets the language prefix automatically. Developers don’t have to rewrite hrefs by hand.
  • Static resources are protected — /uploads/, /templates/, /engine/, /language/ and the favicon never get a language prefix, so there are no 404 errors on images and CSS.
  • Any ISO code — a built-in database of more than 90 language codes (ISO 639-1) and 90+ country codes (ISO 3166-1), with reference tables right in the admin panel.
  • Translated SEO-friendly URL for every language — each item can have its own URL (alt_name) in each language. When a page is viewed in that language, the translated URL is used automatically in links, canonical, hreflang and the Sitemap.
  • Remembers the chosen language — the visitor’s language is stored in a cookie, and the site opens in that language on the next visit.
  • Browser language detection — on the first visit the site can open in the visitor’s language automatically, if it is on the list.

2. SEO for international search engines

  • Automatic hreflang — the module generates correct <link rel="alternate" hreflang="..."> tags for all active languages, including the x-default that Google requires.
  • Localised site meta tags — home_title, description, short_title and keywords can be set separately for each language in the system settings.
  • Four strategies for untranslated pages:
    • Fallback — show the original content
    • Strict Mode — clear the fields and show empty values
    • 404 Not Found — return an error to the search engine
    • Redirect — a 301 redirect to the home page
  • Hide untranslated content in lists — exclude news without a translation from the home page, categories and search results for a given language.
  • Your own translation criteria — the administrator decides which fields (Title / Short Story / Full Story) must be filled in for an item to count as translated.

3. Language files (.lng) and the translation editor

  • A visual .lng editor — no more editing files over FTP. All keys are shown in a clear table with the original and the translation side by side.
  • Missing translations are highlighted — untranslated keys show up in red, and a counter tells you how many lines are left.
  • Instant search — a live filter by key and by text, with no page reload.
  • Your own .lng files — add custom files (for example my_design.lng) to translate elements of your design.
  • Import translations from other languages — a two-step wizard copies the contents of a .lng file between any language folders.
  • DLE system files are protected — keys from adminpanel.lng, website.lng and other original DLE files cannot be deleted by accident.

4. Automatic AI translation

  • Four AI providers — OpenAI (GPT), Anthropic Claude, Google Gemini and DeepSeek. The module loads the model list from the provider with the "Refresh models" button, so new models are available as soon as they are released.
  • Switch providers on the fly — compare the translation quality of different models without touching the code.
  • One key, one button — for pinpoint edits.
  • Batch AI translation of a whole file — with a progress bar, smart batching of 5 keys per request and automatic retries on network errors.
  • Skip Existing mode — translate only empty keys and leave finished translations alone.
  • Technical elements stay intact — the AI gets special instructions to leave variables like {user}, HTML tags and DLE markup untouched.
  • News content translation — a separate mechanism translates the title, short description and full text of news, keeping every HTML tag, style and the structure of the document.
  • Bulk news translation — the "Bulk translation" tab translates the whole site, or selected categories and dates, into the chosen languages: titles, texts, meta tags, tags and multilingual additional fields. It runs in an open tab or in the background by cron — with progress, pause, retry of errors and an automatic stop if the AI balance runs out or the key is wrong.
  • Your own instructions for the AI — set the style, tone and what must not be translated. By default the names of games, apps, brands and people, as well as facts — languages, versions, numbers — stay as in the original.
  • Do not overwrite filled fields — the AI translates only empty fields: correct names and values that you or a parser have already filled in are not overwritten.

5. Template tags for developers

The module adds a powerful set of tags that work in any DLE .tpl template:

  • {lang=key} — output any string from a .lng file directly in the template.
  • {lang-code} — the two-letter ISO code of the current language (handy for <html lang="...">).
  • {home-url} — the absolute home page URL, including the current language prefix.
  • {site-title}, {site-description}, {site-name} — localised site metadata.
  • [if_lang=en,ru]...[/if_lang] — show a block only for the listed languages.
  • [not_lang=en]...[/not_lang] — show a block to everyone except the listed languages.

6. The language switcher — {lang-select}

One tag — dozens of design options, no JavaScript to write:

  • Four display types:
    • links — a horizontal or vertical list of links
    • dropdown — an animated drop-down list
    • select — a native HTML select (great on mobile)
    • auto — switches automatically: dropdown on desktop, select or links on mobile
  • Choose what to show — flag, name, native name and code, in any combination, through the show parameter.
  • Themes and sizes — light/dark and sm/md/lg through CSS variables.
  • Animations — fade, slide and other dropdown effects.
  • Positioning — bottom-left, bottom-right, top-left, top-right.
  • Open on — click or hover.
  • Order control — the order parameter sets any language order, exclude hides the ones you don’t need.
  • Custom names — the names parameter sets your own labels for any language.
  • Responsive breakpoint — a configurable point where the desktop version switches to mobile.
  • Full accessibility — ARIA attributes, keyboard support and hreflang attributes on every link.

7. Custom switchers with {lang-select-loop}

For developers who want full control over the switcher’s HTML, the module offers a loop tag with its own templating:

  • Loop variables: {ls-url}, {ls-code}, {ls-CODE}, {ls-name}, {ls-name-native}, {ls-flag}, {ls-flag-url}, {ls-active}, {ls-selected}, {ls-index}, {ls-count}, {ls-odd}, {ls-even}.
  • Conditional blocks: [if_ls_active], [if_ls_inactive], [if_ls_first], [if_ls_last], [if_ls_odd], [if_ls_even].
  • Build any custom interface — language cards with flags, tab switchers, grouped mega menus — all within a regular HTML template.

8. DLE XFields (additional fields) support

  • A multilingual field with one checkbox — in the settings of any DLE additional field, turn on "Use as a multilingual field (Multi-Language)" and set default values for each language.
  • Translations in the language tab — the values for each language are filled in on the language tab when editing a news item, including lists, images and files.
  • The same template tags — [xfvalue_name] outputs the value in the page language by itself, with no copies of fields with language suffixes.

9. Safe installation and removal of languages via AJAX

  • Step-by-step installation with a progress bar — every operation (creating the folder, copying files, adding database columns, setting up XFields) runs in stages.
  • Resilient to 504 timeouts — the module reconnects automatically after network errors and continues from the same step.
  • Clone from an existing language — when creating a new language, copy all .lng files from any existing folder to speed up localisation.
  • Flag icons installed automatically — the module picks the right country icon from its built-in database even when the language ISO code differs from the country code (for example, en → the gb flag).
  • Safe change of the default language — a step-by-step background migration moves content between the main and language fields in the database without losing data, so you can change the site’s main language even after it has been filled.

10. A professional admin panel

  • A dashboard with statistics — module status, number of active languages and the default language on one screen.
  • A built-in ISO code reference — pop-ups with every language and country code, flag and name. Click a row and the code is inserted into the form.
  • ISO code validation — the module warns you immediately if you try to use a country code instead of a language code (a common SEO mistake).
  • Update checks — automatic and manual checks for new versions, with the changelog shown right in the admin panel.
  • A multilingual admin interface — the whole module is built on .lng files and can be translated into any language.

11. Compatibility and performance

  • DataLife Engine — versions 19.0 — 21.0.
  • PHP — compatible with PHP 7.4 – 8.x.
  • One database — no duplicated records, only extra columns.
  • Minimal performance impact — the module works at the template engine level and does not affect DLE’s main queries.
  • DLE cache, Memcache and Redis — cached blocks (calendar, archive, tag cloud and others) are stored separately for each language, and saving the module settings clears the whole cache.

Who it is for

  • News sites reaching an international audience.
  • Corporate portals that need localisation for different regions.
  • Blogs and information projects that need SEO visibility in several countries.
  • Travel and event sites that simply must work in several languages.
  • Any DLE project that wants to go multilingual without moving to another CMS.

What you get

  • Full multilingual support within a single DLE installation.
  • Bulk translation of the whole site into new languages — in the background, without manual work on each news item.
  • Automatic translation of content and interface with the leading AI models of 2026.
  • Correct SEO for Google, Yandex and other search engines.
  • A flexible toolkit for building language switchers without writing JavaScript.
  • An intuitive translation editor that saves dozens of hours of work with .lng files.
  • Professional technical support and regular updates.

DLE Multi-Language turns your single-language site into a full international publication in a few clicks — painlessly, without duplicating the engine and without losing SEO.

Screenshots

Click a screenshot to zoom in

Choose a suitable plan

We offer flexible licensing options depending on your needs.

Standard
$60
  • 3 sites
  • Open source code
  • Support 12 months
  • No updates
  • Downloads 7 days
Recommended
Extended
$72
  • All Standard features
  • 10 sites
  • Priority support
  • Updates 12 months
  • Downloads 12 months
Premium
$144
  • All Extended features
  • Unlimited number of sites
  • Personal consultations
  • Updates forever
  • Downloads forever
  • Installation and setup
  • Adapted to your website (including code refinement)
UnboundFor studios and closed servers

Everything in Premium, but the key is not tied to sites and the module never contacts our server.

$360

A site is a domain together with all its subdomains.

Version history

  1. 2.8.1 current 2 Fixed

    Fixed 2

    • The tag cloud on a language version shows only the tags of that language; if no tags are translated, the main language tags are shown
    • {lang=...}, [if_lang] and [not_lang] tags are now processed in AJAX responses too: the profile popup, a newly added comment and others
  2. 2.8.0 3 New

    New 3

    • The flag of each language in the news list shows how many news items are not translated yet; clicking the flag shows only those
    • A "Translate into … (AI)" bulk action in the news list: select news items, choose a language, and they go to bulk translation
    • The cross in a language column opens the news item right on that language tab, and the check mark shows the translated title; the main language flag is shown next to "Title"
  3. 2.7.0 1 New 1 Fixed

    New 1

    • The news list in the admin panel has a flag column for each language: a check mark if the news item is translated, a cross if not. You can see at once what still needs translating

    Fixed 1

    • If you add a language prefix to a news URL (/de/games/1118-…html), the site redirects to the same news item with its translated URL in the chosen language (/de/spiele/1118-…html), not to the default language
  4. 2.6.0 2 New 4 Fixed

    New 2

    • A separate category URL for each language: an "Alternative name" field per language in the category settings (/de/hintergrunde/). Links, the language switcher, hreflang, canonical and the sitemap use the translated URL; the old one redirects with 301
    • A separate static page URL for each language (/en/about-us.html), with links, the language switcher and a redirect from the old URL

    Fixed 4

    • Paging through search results on the language versions of the site works again
    • Bulk translation with Claude no longer fails with "SSL_read: unexpected eof" on long texts; if the connection to the AI service drops, translation waits and retries instead of marking news items as failed
    • When the main site language is changed, the URLs of untranslated news, categories and pages are kept
    • Other plugins can extend the module: its files are loaded through the DLE plugin system
  5. 2.5.1 2 Fixed

    Fixed 2

    • AI translation no longer changes the publication date of a news item on sites where the database updated the date on any edit of the record
    • If the AI adds links or asterisks that are not in the original, the request is repeated and such text never reaches the news item
12 earlier versions
  1. 2.5.0 1 New 9 Fixed

    New 1

    • AI translation mode for each additional field: "Follow the general setting", "Always translate" (even if the field is already filled, e.g. a description the parser copied from another site) or "Do not translate"

    Fixed 9

    • The "Translate from original (AI)" button translates additional fields with the visual editor and fields with multiple values
    • Long formatted texts keep their formatting after translation: headings, lists, tables and links are no longer broken
    • Translation with DeepSeek is several times faster and no longer cuts off on long texts; if the AI returns damaged "�" characters, the request is repeated
    • Pages of translated tags and additional field values (/en/tags/…, /en/xfsearch/…) open instead of a 404 error
    • Bulk translation: long additional fields are translated in parts, multi-value fields are no longer merged, search by translated field values is updated
    • Tags and additional field search are saved when the main site language is also in the language list
    • The AI translation button for static pages speaks the admin panel language and keeps formatting
    • The language switcher takes less space on phones and turns dark in the template's dark theme
    • The module works together with other modules that change site URLs in engine/init.php
  2. 2.4.0 1 New 2 Fixed

    New 1

    • New "Do not translate with AI" option in additional field settings: the "Translate from original (AI)" button and bulk translation skip such a field, for example voice-overs or translation studios that differ in each language

    Fixed 2

    • Switching the language on the search page no longer leads to a 404 error
    • Language sitemaps are created again when DLE Movie Importer PRO or DLE SEO Pro is also installed on the site
  3. 2.3.0 1 Fixed

    Fixed 1

    • Several minor bugs have been found and fixed
  4. 2.2.1 2 Fixed

    Fixed 2

    • The module's service file in engine/data can no longer be opened from a browser: it is kept in a protected PHP file, and the old file is removed on update
    • On DLE without Spanish (19.x) the module no longer adds an empty "Spanish" to the admin language choice, which led to the "Language file not found" error
  5. 2.2.0 3 New 1 Improved 4 Fixed

    New 3

    • Bulk news translation: the "Bulk translation" tab translates all news, or selected categories and dates, into the chosen languages — in an open tab or in the background by cron
    • Bulk translation lets you pick the AI service and write your own instructions: style, tone, what to keep untranslated. Names of games, apps and brands stay as in the original
    • "Do not overwrite filled fields" setting: the "Translate from original (AI)" button translates only empty fields; titles and additional fields filled by hand or by a parser stay

    Improved 1

    • The "Translate from original (AI)" button and its messages are in English, Ukrainian and Spanish in the admin panel in those languages

    Fixed 4

    • The calendar, archive, tag cloud and other cached blocks no longer appear in another language — including with Memcache and Redis caching
    • Saving the module settings now clears the whole site cache, including Memcache and Redis
    • Together with DLE Movie Importer PRO, short news in lists are shown in the page language again (DLE 20.0 and newer)
    • On DLE 19.0 the switches in the module "Settings" look like DLE switches again, not square checkboxes
  6. 2.1.0 3 New 2 Improved

    New 3

    • Additional fields: the field settings now have the "Use as a multilingual field (Multi-Language)" checkbox — the translation is filled in on the news language tab, separate [EN] fields are no longer created
    • The [xfvalue_...] tag outputs the value in the visitor's language by itself — no template changes needed
    • A default value for each language, and list fields get their own list of values in each language

    Improved 2

    • Old [EN] fields with filled translations move to the new scheme automatically, old tags like [xfvalue_field_en] keep working
    • Module panel in Spanish
  7. 2.0.1 1 Improved 5 Fixed

    Improved 1

    • If the model declines a text or its answer is cut off because of length, the module says so plainly instead of “AI returned invalid JSON”.

    Fixed 5

    • The new Claude models (Opus 5, Opus 4.7 and 4.8, Sonnet 5, Fable) work again: “Test connection” and translation no longer fail with “temperature is deprecated”.
    • Additional fields get their language copies again: old fields and fields created while the DLE patch did not apply get their copies automatically when the module is opened, and they appear on the language tab when adding a news item.
    • OpenAI GPT-6 and o-series models translate through the new OpenAI interface and no longer trip over the temperature setting.
    • Gemini 3 translates with the temperature Google recommends: the lowered temperature could cause looping and weaker translations.
    • Long articles no longer time out on slower models (DeepSeek V4 Pro, Claude Opus 5, GPT-6, Gemini 3): the response wait is now 3 minutes.
  8. 2.0.0 3 New 2 Improved 2 Fixed

    New 3

    • Support for DLE 21.0.
    • Comments by language: each language version of a post has its own comments and correct counters, including when more comments are loaded and when a new one is posted.
    • Language flags on the fields of categories, static pages, settings, user groups and the tag cloud — without a duplicate language-code label.

    Improved 2

    • The default language now lives in DLE’s own fields: no separate tab and no duplicates when adding or editing news.
    • Extra fields of all types are translated correctly, including repeatable and hidden ones; the language copies of a field are created, renamed and deleted together with the original field.

    Fixed 2

    • The “Empty translated extra fields” setting did not work correctly with some field types.
    • DLE 19.0: some of the module’s changes were not applied — now all of them are.
  9. 1.0.3 8 New 7 Improved 9 Fixed

    New 8

    • Добавлен умный hreflang: язык объявляется в альтернативных ссылках только если материал действительно переведён. Поисковые системы больше не переходят по альтернативам, ведущим на 404 или на дубль контента.
    • Добавлена панель полноты перевода на главной странице модуля: процент переведённого по новостям, категориям, статическим страницам и файлам интерфейса для каждого языка.
    • Добавлено обновление списка AI-моделей одной кнопкой: список загружается напрямую от провайдера и сохраняется, поэтому новые модели доступны без обновления модуля. Рядом добавлена кнопка проверки соединения, которая тестирует ключ, модель и прокси.
    • Добавлено управление языками: смена папки языка, изменение порядка в переключателе и отключение языка без удаления переведённого контента.
    • Добавлены экспорт и импорт языковых файлов в форматах JSON и CSV, включая выгрузку только непереведённых строк — удобно для передачи переводчику.
    • Добавлена настройка поведения переключателя для непереведённых страниц: показывать ссылку как обычно, скрывать язык или вести на главную этого языка.
    • Языковые карты сайта теперь автоматически подключаются к основному sitemap.xml, поэтому поисковые системы находят их без ручной настройки.
    • Расширена транслитерация ЧПУ (alt_name): добавлены армянский, греческий, грузинский, арабский, иврит, персидский, а также казахский и другие кириллические варианты. Для иероглифических языков предусмотрен запасной вариант вместо пустого адреса.

    Improved 7

    • Устаревшие названия AI-моделей теперь переносятся автоматически, поэтому сохранённая ранее модель не остаётся неработающей после переименования у провайдера.
    • Поисковые роботы больше не перенаправляются автоматически на другой язык: робот получает именно тот адрес, который запросил. Прежнее поведение можно вернуть отдельной настройкой.
    • Автоматическое перенаправление больше не применяется к RSS, ajax-запросам и файлам, чтобы не ломать ленты и сторонние интеграции.
    • Кеш страниц теперь очищается автоматически при изменении настроек и списка языков.
    • Снижена нагрузка на сайт: языковые файлы админпанели, установщика и самого модуля больше не подключаются при каждом обращении посетителя.
    • Проверка обновлений теперь использует собственный суточный кеш и не обращается к серверу обновлений при каждом открытии страницы модуля.
    • Cookie выбранного языка теперь выставляется с атрибутами SameSite и Secure.

    Fixed 9

    • Исправлена ошибка 404 на ссылках вида /xx/index.php?do=register, ?do=lostpassword, ?action=logout и других: адреса больше не содержат index.php и открываются на всех серверах, включая nginx.
    • Исправлена форма поиска на языковых страницах, которая отправляла запрос на несуществующий адрес.
    • Исправлена невозможность вернуться на язык по умолчанию при включённом запоминании языка: выбор в переключателе теперь сохраняется корректно для всех типов переключателя.
    • Исправлена отдача 403 вместо 404 для непереведённых материалов и статических страниц в режиме «Отдавать 404».
    • Исправлена ошибка SQL в пользовательских блоках {custom} с постраничной навигацией при включённом скрытии непереведённых материалов.
    • Исправлена работа модуля в подкаталоге сайта: пути к флагам, изображениям и перенаправлениям больше не задаются жёстко от корня домена.
    • Исправлен редактор переводов: определение папки языка по умолчанию, критическая ошибка при открытии некоторых языковых файлов на PHP 8 и неработавшая проверка дубликата ключа.
    • Исправлена потеря языка у форм, отправляющих данные на корень сайта.
    • Устранены предупреждения PHP и возможные конфликты функций при одновременной работе с другими модулями.
  10. 1.0.2 4 New 2 Fixed

    New 4

    • Добавлен переводимый ЧПУ (alt_name) для каждого языка: отдельное поле URL в форме добавления и редактирования материала с AI-генерацией слага. При просмотре на другом языке переведённый URL используется в ссылках, canonical, hreflang и Sitemap.
    • Добавлено запоминание выбранного языка посетителя через cookie: при следующем заходе на сайт без префикса посетитель автоматически перенаправляется на свой язык.
    • Добавлено автоопределение языка посетителя по настройкам браузера: если язык есть в списке, посетитель сразу перенаправляется на него.
    • Добавлена безопасная смена языка по умолчанию: пошаговая фоновая (AJAX) миграция, которая переносит контент между основными и языковыми полями БД. Предусмотрены предупреждения о рисках, счётчик материалов, защита от прерывания и резервная копия конфигурации.

    Fixed 2

    • Добавлены отсутствующие сообщения об ошибках AI-провайдеров (OpenAI, Claude, Gemini, DeepSeek).
    • Добавлены недостающие переводы настроек дополнительных полей в украинской локализации.
  11. 1.0.1 3 New 4 Fixed

    New 3

    • Добавлена полноценная поддержка DataLife Engine 20.0: обновлены XML-модификации и разделены операции для DLE 19.0–19.1 и DLE 20.0+
    • Добавлена поддержка прокси, SOCKS5 и SOCKS5H для AI-провайдеров с отдельной вкладкой настроек.
    • Добавлена настройка поведения пустых дополнительных полей: использовать значение основного языка либо не отображать поле.

    Fixed 4

    • Исправлена загрузка языкового файла ml.lng и отображение текстов модуля в административной панели.
    • Исправлено размножение обратных слешей при повторном сохранении материалов.
    • Исправлено создание и редактирование языковых .lng-файлов: массивы и сложные значения теперь сохраняются в исходном PHP-формате.
    • Исправлена многоязычная работа поиска, статических страниц, тегов, новостей, Sitemap и Google News.
  12. 1.0.0 1 New

    New 1

    • Первый релиз модуля
Comments 8

Sign in to leave a comment.

Николай Куликов
А что с доп полями для разных языковых версий? Как устроен процесс перевода значений доп полей?
Здравствуйте! В настройках доп. поля ставите галочку «Использовать как мультиязычное поле», и у него появляются значения для каждого языка. В новости они заполняются во вкладке нужного языка: вручную, кнопкой AI-перевода или массово для всех новостей сразу.

В шаблоне ничего менять не нужно, [xfvalue_имя] сам выводит значение на языке страницы. И если поле уже заполнено, например парсером, AI его не перезапишет.
Этот модуль может работать как плагин Google-Translate в WordPress? Автоматически переводить сайт на выбранные языки с основного языка
Здравствуйте! Почти, но есть разница. Виджет Google переводит страницу на лету, а здесь переводы сохраняются в базе, и у каждого языка свой адрес (/en/, /de/ и т.д.). Так их нормально индексируют поисковики.

Вручную переводить не придётся: новость переводится одной кнопкой через AI, а весь сайт сразу можно перевести на вкладке «Массовый перевод», хоть в фоне по cron. Потом любой перевод можно поправить руками.
Я загружаю два шаблона один основа русский , второй англ ? или как работает ?
Здравствуйте! Нет, два шаблона загружать не нужно — модуль так не работает.

Вы используете один ваш шаблон, а модуль уже внутри него переключает языки. Для этого есть специальные теги — вы просто отмечаете ими те места, где текст должен меняться (меню, кнопки, блоки и т.д.), и модуль сам подставляет нужный язык по URL (/en/, /de/ и т.п.).

Заголовки сайта, описания, статические страницы и новости переводятся прямо в админке — отдельными полями под каждый язык. Никаких копий шаблона делать не надо.
А если у меня много строк кода внутри шаблона с текстом внутри он тоже переведет скрипты?
Скрипты имееют 9к строк
В целом, если это код, он его не будет переводить, но, конечно, всё зависит от промпта. Код открыт, поэтому можно просто задать инструкцию: если распознаётся, что это код (даже в обычном текстовом формате), то пропускать его и не переводить .