Weak machine translations: fix the drafts Weblate's automatic translation leaves, and stop new ones #910
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#910
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Many catalogues hold weak machine drafts. Fix them in Weblate, and stop new ones from piling up.
Where they come from
Every Weblate component runs the Automatic translation add-on: LibreTranslate, query
state:empty, mode fuzzy, threshold 80. Each new source string gets a LibreTranslate draft in every language. Many of those drafts are poor:%(compte)s,{compte},SECRET KEY);[X]and[hariri chanzo].Drafts count for the release gate (#347), so none of this blocks a build, but users see it.
How big it is (2026-10-15, after #893 merged)
Left out of the compiled catalogues.
messages.py checkexcludes these drafts from the.mofiles, so users see English for them:Compiled but poor. A sample audit (150 strings per language, 2026-10-13) found these shares of drafts wrong in meaning:
Never reviewed at all:
Already done, outside this issue:
What to do
Stop the inflow. Pick one:
Today a draft that breaks a placeholder is saved as needing editing, and nothing flags it.
Fix the excluded drafts first. Do every language in the table: restore the placeholder set and the count, or rewrite the string. These are what put English on screen.
Review the 0.5.0 languages, worst first. Order by the audit: ca, lv, et, eu, then the rest. Use the same glossary-first method as the 2026-10-13 passes: a binding term sheet per language, then batches that check against it. Keep each result as needing review until a native speaker approves it.
zh-Hans and zh-Hant. Retranslate from the zh-Hant glossary (Taiwan usage) and a new zh-Hans one. Patching these drafts isn't enough: they mix scripts and get core terms wrong (應用程式 for a job application, 上市 for a listing).
Add a guard. A check (
messages.py check, or a Weblate quality check) that reports per language how many drafts are excluded, so the number can only go down.Not part of this issue
These are filed or tracked elsewhere:
pgettext.Moved to 0.6.0 at the maintainer's word (2026-10-31), to release 0.5.0 today. The remaining machine drafts are Weblate review work; the 0.5.0 release gate counts drafts, so they do not block it.