github WeblateOrg/weblate weblate-5.17
Weblate 5.17

2 days ago

Released on April 15th 2026.

New features

Improvements

Security fixes

Bug fixes

  • Project backup now preserves source translation read-only handling, and source-side pending commits without files are discarded to avoid repeated parse failures.

  • Fixed background failures in Automatic translation.

  • Generated SSH wrapper scripts are now stored in CACHE_DIR instead of persistent SSH storage, and obsolete or stale wrappers are cleaned up during upgrade.

  • Hardened Git branch handling to reject invalid branch names before repository operations.

  • Sanitized repository and upload backend errors before exposing them in UI and API responses.

  • Matching exporters now honor component file format parameters.

  • Per-project access tokens now clean up stale bot users on project deletion and upgrade, and prevent removing the last assigned team to avoid orphaning the token.

  • Batch automatic translation now uses project-level machinery configuration instead of only site-wide settings.

  • Fixed sorting by the Unreviewed column in listings.

  • Fixed false positive in Chars around XML tags for Arabic letter Waw (“و”) adjacent to XML tags.

  • Squash Git commits better handle commits applied upstream.

  • list_checks now requires exactly one --sections value when writing generated documentation to a file using --output.

  • Watched translations on the dashboard now use a stable language-aware ordering.

  • Reduced error-reporting noise for handled authentication callback failures and clarified password reset confirmation messages.

  • Automatic suggestions now falls back to the default API URL when base URL is empty.

  • DeepL maps plain Portuguese to European Portuguese.

  • MyMemory now falls back to HTTP status handling when the service returns a non-JSON error response.

  • Push branches are no longer updated with upstream-only commits in multi-branch workflows.

  • POT update add-ons now fall back to the component URL for the Report-Msgid-Bugs-To header when the component setting is empty.

  • Improved repository lock error handling when deleting units.

  • Adding new languages now rescans only the newly added languages instead of forcing a full component scan.

  • Maximum size of translation previews now keep the configured text box visible and render overflowing text in red.

  • Restored documented default encoding fallback for Apple iOS strings and Java properties when file format parameters are not explicitly set.

  • Reduced repeated database queries in Fill read-only strings with source during the daily add-on task, and fixed auto-translation progress updates when the queued target disappears before execution.

  • Android string resources now preserves template-defined escaped markup formatting when saving translations.

  • REST API component creation now handles temporary uploaded files for docfile and zipfile uploads.

  • SSH repository errors now distinguish changed host keys from missing host keys and avoid automatically trusting host key replacements.

  • Automatic suggestions no longer treats translatable reStructuredText role content as Placeables in automatic suggestion.

  • Mismatched interrobang now recognizes Arabic interrobang punctuation such as ؟! and .

Compatibility

  • The project_scope class attribute on add-ons has been removed. Third-party add-ons that used project_scope = True should override can_install() to return False when component is not None.

  • The daily() method signature on add-ons has changed. Add-ons that previously overrode daily(component) to perform per-component work should now override daily_component(component) instead. The base daily() method automatically iterates components and calls daily_component() for each. Add-ons that can be optimized to operate at project scope should override daily(component, project) directly to implement project-level logic.

  • Dropped support for MySQL and MariaDB as the database engine.

  • Weblate now requires Django 6.0.

  • Weblate now requires Git 2.46 or newer.

  • Uploaded project backups are now validated more strictly during import and suspicious ZIP archives can be rejected; see Project level backups.

Upgrading

Please follow Generic upgrade instructions in order to perform update.

  • There are several changes in settings_example.py, most notably ADMINS syntax has changed in Django and SOCIAL_AUTH_PIPELINE and INSTALLED_APPS need adjustments; please adjust your settings accordingly.

  • If you run Weblate in Docker and rely on IPv6 listeners, review WEBLATE_NGINX_IPV6. The default auto enables IPv6 listeners only when IPv6 is available in the container runtime; use on to always enable them or off to disable them.

  • Outbound project links, webhook URLs, and repository or push URLs pointing to internal or non-public addresses are now rejected by default. If your setup intentionally uses internal addresses, adjust the corresponding restriction settings such as PROJECT_WEB_RESTRICT_PRIVATE, WEBHOOK_RESTRICT_PRIVATE, or VCS_RESTRICT_PRIVATE, and the related allowlists such as VCS_ALLOW_HOSTS.

Contributors

Code contributions
Michal Čihař, michael-smt, Kartik Ohri, bogusdominica, Karen Konou, Sven Hüster, Gersona, subnix, matilde-gillia, Steven Loria, felixfon, baltenaxis, Claw Explorer, Samuel Gomes

Translations contributions
PICOPress, Blueberry, Deleted User, Francisco Serrador, eulalio, Pavel Miniutka, Amir E. Aharoni, hoanghuy309, nKsyn, Jim Kats, Martin Srebotnjak, Zahid Rizky Fakhri, symegac, Francesco Marinucci, Michal Čihař, Hyeonjeong Lee, ovl-1, Tarás Lavrentiev, Edson Wolf, Yuri Chornoivan, Omer I.S., Arantxa, Tuomas Hietala, Milo Ivir, justcontributor, Kristoffer Grundström, Andi Chandler, Andrei Stepanov, ButterflyOfFire, Átila França, Мария Рангелова, EESF-2, CzaroGame, Agnieszka C, Manuela Silva, پرویز قادر, JiZPaper, Fjuro, Alexis Launay, tfr tint, Candied-Ecard, Kyotaro Iijima, Priit Jõerüüt, Matthaiks, Besnik Bleta, delvani, Mickaël Binos, VfBFan, UDP, Aindriú Mac Giolla Eoin, Adam Havránek, mohammadA, 大王叫我来巡山, Sketch6580, Dick Groskamp, Heimen Stoffels, Yaron Shahrabani, Любомир Василев, Максим Горпиніч, Emin Tufan Çetin, Horus68, Sjur N Moshagen, Peter Vančo, Romhányi-Kakucska Viktor, ZayedRashid, Julien Lepiller, Massimo Pissarello, Jeff Huang, ojppe, தமிழ்நேரம், ibragimov, Sylvestre Ledru, Ldm Public, pan93412, Jernej Pangerc, Luciana Waldbaur, username-generic, jonnysemon, syl, Arif Budiman, Max Kleinehelleforth, Carp300, Yago Raña Gayoso, anas agha, Ettore Atalan

Documentation contributions
Michal Čihař, Kartik Ohri, Sven Hüster, Dylan Kiss (dyki), Gersona, michael-smt, matilde-gillia, Steven Loria, baltenaxis, Claw Explorer, Samuel Gomes

All changes in detail.

Don't miss a new weblate release

NewReleases is sending notifications on new releases.