What it is
A checker for app translation files. It reads JSON, YAML, .properties, Apple .strings, gettext .po or a plain list of keys and compares every language with the source.
Translation checks for apps in many languages
Locale Gaps compares your source language file with each translation and stops what would break on screen: missing keys, empty or untranslated text, lost placeholders, broken markup and plural forms a language needs but the file does not have. Then it hands translators a file with exactly what is left to do.
A checker for app translation files. It reads JSON, YAML, .properties, Apple .strings, gettext .po or a plain list of keys and compares every language with the source.
Frontend and mobile developers, product managers shipping in several languages, localization managers and translators who want a clean list instead of a screenshot of a raw key.
A missing key shows users text like cart.checkout, a lost placeholder prints {{amount}} instead of a price, and a missing plural form makes Russian or Arabic read wrong. You see all of it before release.
Paste the source file, add one box per language and press Check translations. Nothing leaves this page.
Long translations often overflow buttons and menus. 1.6 means 60 percent longer.
Comma separated, for example brand or product names. Numbers, codes and single brand words are already ignored.
Paste a source file and at least one translation, or load the sample app to see a full report.
Each rule exists because it has broken a real screen somewhere. None of them needs a model or a guess.
Every source key must exist in the translation and have text. Otherwise users see cart.checkout or an empty button.
Text identical to the source is flagged unless it is a number, a code, a link or a word you allowed, like your brand name.
Variables like {{name}}, {name}, %s, %1$d, %{name} and :name must match the source exactly. A renamed variable prints nothing.
Plural rules come from your browser, the same rules apps use. Russian needs one, few and many. Arabic needs six forms. Both ICU messages and i18next suffixes like items_few are checked.
Tags like <a>, <b> or <0> must survive translation, or links and emphasis disappear.
Very long translations, keys that exist only in the translation and keys defined twice are listed with lower priority.
Usually English. Open the file or paste its content. Nested keys are flattened to paths like checkout.pay.
Type the language code and paste its file. Each language can use its own format.
Each language gets a stamp with keys present and strings ready to ship, plus a count per issue type.
Filter the findings, then download the file to translate for each language or the full CSV.
Copy the release note into your pull request or release checklist. The hash shows the report was not edited.
No. Parsing and checks run in this page. Close the tab and the text is gone.
Some words really are the same. Add them to Words that may stay the same and run the check again.
From Intl.PluralRules in your browser, which follows the Unicode CLDR data that most apps use.
Yes. Paste plain lists of keys. Missing and extra keys are reported, the text checks are skipped.