| Type | Change |
|---|---|
| Security | a translation no longer turns text shown as code into live code. Every translated result was run through a full HTML entity decode, so `<script>` that an article showed as text became a real script tag in every translation, written past Joomla's text filters. Only the entities a translation service adds are decoded now; an entity for ``, `&` or `"` that the source itself carries stays as it is |
| Security | a batch translation checks the rights on every selected item. Rights on the component were enough to have the plugin overwrite translations, also for a user limited per category or allowed to create but not to edit. The source item, the category a new translation goes into and every existing translation now need the edit rights Joomla's own edit screen asks for; an item that fails is skipped and counted in a warning |
| Security | the Gemini API key is sent in a header instead of in the web address, where proxies and firewalls log it |
| Fix | the social media links on the install and uninstall screens have an accessible name, so a screen reader announces "Open LinkedIn in new window" and so on instead of an empty link. The icons themselves are hidden from screen readers, every link that opens a new window carries rel="noopener noreferrer", and the new window icon of the administrator template is shown again on the other links of those screens |
| Fix | a dictionary term is no longer replaced inside a link, an image path or an attribute. A brand name in `href="https://brand.example"` was swapped for the target term and broke the link. The dictionary now only touches the text between the tags and leaves web addresses alone |
| Fix | Traditional Chinese, Brazilian Portuguese and Serbian in Latin script are translated into the right variant. The language code was cut to two letters, so zh-TW came out as Simplified Chinese and pt-BR as European Portuguese at Google, Microsoft and DeepL. Each service now gets its own code for these variants, and DeepL gets a valid English target for every English content language |
| Fix | OpenAI, Anthropic, Gemini, Mistral, DeepSeek and xAI retry a throttled request. They gave up on the first "Too Many Requests", leaving every field after the limit in the source language, and showed the same error once per field. They now wait and try again the way DeepL, Google and Microsoft already did, an exhausted credit balance is not retried, and an error is shown once |
| Addition | the `alt` and `title` attributes in HTML are translated. A translation service translates the text between the tags and leaves the tags themselves alone, which keeps links, classes and ids intact but also left the alt text of an image and the title of an image or a link in the source language. The option "Images (Alt & Caption)" never covered these: it is about the intro and full article image, not about an image placed in the text. The texts of these two attributes are now taken out of the HTML, translated together in one extra request and put back, for every translation service and for every field that holds HTML: article text, category and tag description, module content, editor custom fields and mail templates. No other attribute is touched, a value that is an address or holds no letters is left as it is, and an attribute the service did translate itself is not translated twice. Nothing to switch on: it follows the field the HTML is in |
| Change | a large batch translation runs in steps. Everything was handled in one page request, which a selection of twenty articles into three languages regularly outlived, ending in a white page or a gateway time-out. The batch now stops after about 40 seconds and carries on by itself in a new request until the selection is done, and reports the totals at the end |
| Change | debug logging is off by default, also in the FREE edition and on a site that never saved the settings, and the log no longer holds a preview of the content being translated, only its length and a short hash |
| Change | the model lists of the AI services are cached for an hour whatever the site's cache setting. With System Cache off, the Joomla default, every visit to the configuration asked every configured service again, which could take up to a minute |
| Change | the target language buttons on an edit screen work with a keyboard and a screen reader. They have a visible focus, sit in a labelled group, and "Select all" and "Select none" are buttons. The script and its styles moved to media/plg_system_autolanguage, so the browser caches them and a template can override them, and it no longer writes to the browser console |
| Change | the plugin does nothing on a request it ignores. Its language file and log file were loaded on every page, frontend included |
| Change | the "opens in a new window" icon is shown again on links in alerts in the plugin settings; only the PRO badge hides it, and says it in hidden text instead. The DeepL usage bar has an accessible name |
| Change | replaced Joomla APIs that are removed in Joomla 7 and the `curl_close()` calls that are deprecated in PHP 8.5 |
| Language | new string in all 6 languages; the Spanish one is a provisional translation awaiting review |
| Notes | 5 6 |
Downloads: Autolanguage plugin PRO version
Autolanguage PRO plugin
| Version | 2.7.2 |
|---|---|
| Maturity | Stable |
| Release Date | 2026-11-13 01:00 |
Changelog