Clean Crowdin TMX exports
Localizing software is different from localizing documents: your source is UI strings full of placeholders — {count}, %s, ICU plurals, ${var} — and a TM that mangles those ships bugs, not typos. Export your Crowdin TM to TMX and clean it with a QA pass built for exactly this.
━━ the problem
A target that drops {count}, duplicates %s, or breaks an ICU plural doesn't just read wrong — it throws a format-string error or shows a raw token in production. These are the highest-cost defects in software localization and the hardest to spot in a large TM.
Software strings that are pure tokens ({0}, %1$s, {{value}}) carry no translatable content but still count toward your memory and analysis. They're structural junk that dilutes real leverage.
As a product evolves across branches, the same source string accumulates multiple targets in the shared TM. Deduplicating to one authoritative variant per source keeps your suggestions consistent instead of version-dependent.
━━ how TM Cleaner handles it
Upload the exported TMX and turn on the placeholder-mismatch check: every unit whose source and target placeholder sets differ is flagged in its own category, alongside dedup and junk. Preview them, keep any deliberate collapses, and download a TM that won't ship format-string bugs.
- ✓placeholder-mismatch classifier recognises {name}, {0}, %s, %d, %(name)s, {{var}}, ${var}, and inline tags — the token families software TMs actually use
- ✓strips placeholder-only and markup-only strings that carry no translatable content
- ✓dedup with a chosen winner keeps one authoritative translation per key across branches
- ✓audit CSV pins every flagged unit so a localization engineer can fix the source at its key
━━ frequently asked
what counts as a placeholder mismatch?+
the source and target must contain the SAME set of placeholders with the same counts. dropping {0}, adding an extra %s, or changing {count} to {number} all flag. it recognises brace tokens, printf specifiers, %(named)s, {{double-brace}}, ${dollar}, and XLIFF inline tags. deliberate collapses ("Click {0}" → "Cliquez ici") can be kept per-unit.
does it understand ICU MessageFormat plurals?+
it compares the placeholder tokens on both sides, which catches the common ICU breakages (a missing or altered {count}, a dropped argument). it doesn't fully parse ICU plural grammar — for deep ICU validation pair this with your build-time linter; here the win is catching the token-level mismatches that slip through review at TM scale.
how do I export a TM from Crowdin to TMX?+
in Crowdin, open Translation Memory, select the TM, and download it as TMX. upload the .tmx here; the cleaned output re-imports the same way or feeds any TMX-capable tool in your pipeline.
━━ also clean
free tier · pay-as-you-go after · no subscription · see pricing