Skip to content

Check strings out, and deliveries back in

Paste a JSON or .properties catalog. Nothing pasted leaves the browser.

Lints one catalog for the problems that make a string hard or impossible to translate.

Paste a strings catalog

Audit findings

Paste a catalog, open a file, or drop a .json / .properties file on the pane to run these 11 checks:

  • String concatenation in value Values like 'You have ' + count + ' items' fragment the translator's view. Use ICU MessageFormat or a single string with placeholders.
  • Embedded HTML HTML tags inside values fragment the string and risk being broken by translators. Prefer ICU tag syntax or render markup outside the string.
  • Unbalanced ICU braces ICU MessageFormat uses {} braces. Unbalanced braces break the runtime parser.
  • Printf-style placeholder Printf-style %s / %d placeholders are not position-named, so translators cannot reorder them. Prefer ICU named placeholders.
  • Hardcoded plural via key suffix Pairs like 'item' / 'items' or 'item_plural' / 'item_one' done as separate keys defeat ICU plural categories: only English's two-form pattern is supported.
  • Empty / whitespace-only value Empty values reach the UI as blank text, usually a missed paste.
  • Leading or trailing whitespace Likely an accidental paste artifact. Some renderers trim and some do not.
  • Double space inside value Almost always a typo. HTML collapses, but markdown / plain-text contexts don't.
  • Ambiguous short string Strings shorter than 12 characters (especially single words like 'OK', 'Open', 'Save') need a translator comment for context: they often have gendered or context-dependent translations.
  • Identifier or code as value Values that look like code (camelCase, snake_case, identifiers) are usually not translatable strings and do not belong in the catalog.
  • Very long string Strings over 200 characters usually contain multiple sentences. Consider splitting so translators can leverage TM matches per sentence.

What this tool does not judge

Every check here is structural: keys, placeholders, plural arms, braces, whitespace. Translation quality is a separate question with its own scoring model; the LQA scoring chapter covers it. Plural requirements come from Intl.PluralRules in this browser, so the gate covers any locale the browser knows, not a hardcoded list.

Related: Field guide: the pseudolocalization chapter · Budget estimator · price the round before the file goes out