Using Weblate's Shared Translation Memory to Reduce Translation Work
Learn how to enable Weblate's shared translation memory to reuse approved strings across components, cut translation effort, and avoid common pitfalls.
07 Nov 2025, 06:26 UTC

Problem: Repeated Translation Effort Across Components
When a project splits its user interface, documentation, and help texts into separate Weblate components, translators often see the same sentences appear in each place. Without a mechanism to reuse earlier work, each component is translated from scratch, increasing effort and risking inconsistency.
Thesis: Enable Weblate’s Shared Translation Memory
Weblate stores every approved translation in a global translation memory (TM) that can be searched for fuzzy matches across all components of the same project. Turning this feature on lets translators see suggestions from previously approved strings, reducing the amount of new text they must type and improving consistency.
How the Translation Memory Works
Whenever a translator approves a string, Weblate adds the source‑target pair to the TM. Later, when a new string is opened, the system compares it to the TM entries and returns any matches whose similarity meets a configurable threshold (default 75%). The match appears in the suggestion pane with a percentage score, and the translator can accept, edit, or ignore it.
Enabling TM for a Project
- Log in as a project administrator.
- Navigate to
Project → Settings → Translation memory. - Toggle Enable translation memory.
- Set the Minimum similarity (e.g., 80 for stricter matches) and choose the languages to include.
- Save the settings.
The change takes effect immediately for all existing and new components in the project.
Worked Example: Django Project with Three Components
Consider a Django application split into three Weblate components: ui (interface strings), docs (user guide), and help (tooltip texts). After the first release cycle, the team had translated 1 200 unique strings across the components.
With TM disabled, the second release introduced 300 new strings. Because each component was treated independently, translators had to translate all 300 strings from scratch, even though many resembled existing UI text.
After enabling TM (threshold 75%), the same 300 new strings produced an average fuzzy‑match suggestion of 78% similarity for 90 of them. Translators accepted or edited those suggestions, leaving only 210 strings that required full translation—a 30% reduction in new‑string workload.
This outcome mirrors the case described in Weblate’s documentation, where teams report similar savings after turning on TM for multi‑component projects.
Trade‑offs and Limitations
- Error propagation: If a TM entry contains a mistake, the fuzzy‑match suggestion will repeat that mistake unless the translator catches it.
- Database growth: Each approved string adds a row to the TM table. On very large projects (hundreds of thousands of strings) this can increase storage usage and slow suggestion generation.
- Language coverage: TM only works for language pairs that have been enabled; adding a new language later will not retroactively populate memory for that language.
Practical Checks
- After enabling TM, create a test component and add a string that closely resembles an existing translated string (e.g., change a single word). Open the string in the editor and verify that the suggestion pane shows a fuzzy match with the expected similarity percentage.
- Visit
Project → Translation memory → Statisticsto see the total number of entries and the breakdown by language. - Monitor the database size (e.g., via
SELECT pg_total_relation_size('weblate_translationmemory');on PostgreSQL) or check the admin logs for any errors during suggestion generation.
Actionable Closing
If your Weblate project consists of multiple components that share terminology, turn on the translation memory, set a similarity threshold that balances recall and precision, and schedule a periodic review of TM entries to catch any propagated errors. The setup takes only a few clicks, and the reduction in repetitive work can be measured quickly by comparing the number of new strings translated before and after the change.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.