◇ for Crowdin & software localization

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

placeholder and ICU-token mismatches are runtime bugs

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.

placeholder-only strings inflate the TM as non-translatables

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.

the same key gets re-translated across branches and versions

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.

━━ 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

clean your tmx now →

free tier · pay-as-you-go after · no subscription · see pricing