| Type | Change |
|---|---|
| Security | batch translation now checks whether you actually have rights on the component you are translating, so it can no longer be used to create content somewhere you have no access to |
| Security | API keys are now hidden fields in the configuration screen instead of plain readable text |
| Security | after a batch translation without a selection you are returned to a checked page instead of an unverified web address |
| Security | error messages from the translation services are no longer written to the log with their full response, which could contain your content |
| Security | the helper plugin for update logging is only installed when the update server supplies a valid checksum for it, and only from the Joomill update server |
| Fix | nested categories deeper than one level were created inside the source language tree instead of under their translated parent. Associations created during a translation run were only written to the database at the very end of the request, so a child could not yet see the translation of the parent that had just been created in the same run. The plugin now keeps those associations available for the rest of the request. The same fix applies to nested menu items, nested tags, articles placed in an associated category, module menu assignments and translated links in articles, modules and mail templates |
| Fix | a batch translation now processes categories, menu items and tags top down instead of in the order the list view happened to post them, so a parent is always translated before its children |
| Fix | API keys pasted from a provider's website are now cleaned of invisible characters. Copying a key from a styled page can drag along a non-breaking space, a zero width space, a byte order mark or a line break, none of which are visible in the input field and none of which were removed before. Such a key was rejected as unauthorised by every service, and for DeepL it also broke the detection of the `:fx` suffix, which sent a Free key to the Pro endpoint. Applies to all translation services |
| Fix | the subject line of a YOOtheme Builder form is translated again. The list of translatable YOOtheme properties held `email_subjec` instead of `email_subject`, so that one property never matched anything and always kept its source language |
| Fix | a translation run no longer leaves fields in their source language when the translation service briefly refuses more requests. Every field is sent as its own request, so a batch of a few articles into several languages reaches the rate limit of Google or Microsoft quickly, and until now such a field silently kept its original text. A refused request is now repeated up to three times, waiting the delay the service itself asks for, and the message names the limit instead of quoting the raw error from the service. A field that still fails keeps its original text and is updated by running the translation again. Refusals that waiting cannot solve, such as an exhausted monthly quota or an invalid key, are not repeated |
| Fix | translations no longer fail with "Connection Error: Operation timed out after 30002 milliseconds" on OpenAI. The cURL request timeout was hardcoded (30 seconds for OpenAI) and is unaffected by the PHP max_execution_time setting |
| Fix | the PRO-only settings in the free version showed an upgrade badge with no text next to it. Joomla puts every field description behind the inline help toggle, which leaves the badge without the one sentence explaining what it unlocks. Those fields now render their own description, always visible |
| Fix | the model dropdowns for OpenAI, Mistral, Anthropic, Gemini, xAI and DeepSeek, and the DeepL credits notice, showed "Error: Plugin settings not found (Check DB name)" while the plugin was still disabled. They asked Joomla for the plugin, which only hands back enabled ones, instead of reading the saved settings. The message also pointed at the database prefix, which had nothing to do with it |
| Addition | new "API timeout" option in the Service tab sets the maximum duration of a single translation request for all drivers (10-600 seconds, default 180) |
| Change | when a category has no translated parent, the translation is placed at root level of the target language instead of inside the source language tree, and a warning is written to the log. Menu items and tags already behaved this way and now log the same warning |
| Change | all translation drivers now also set an explicit 15 second connect timeout, so an unreachable API endpoint fails fast instead of consuming the full request timeout |
| Notes | 5 6 |
Downloads: Autolanguage plugin
Autolanguage plugin
| Version | 2.5.0 |
|---|---|
| Maturity | Stable |
| Release Date | 2026-09-01 02:00 |
| Download |
Changelog