Skip to content

Translation quality report

Updated: September 16, 2026

What breaks a translated app is rarely a badly chosen word. It is a {count} that disappeared, a plural that was rewritten by hand, a <b> that lost its closing tag, or a button label three times longer than the original.

AZbox checks all of that against your source language, without needing to know the language.

What it checks

  • Placeholders. {name}, {{name}}, %s, %1$s, %{name}, :name, %@. Missing in the translation, or invented in it.
  • ICU plurals. Braces that do not close, a plural without other, unknown forms, and forms the target language needs: Russian needs few and many, Japanese only needs other. Following CLDR.
  • HTML tags. Tags that do not match the original, in kind or in number.
  • Length. Translations far longer than the source — the usual cause of a clipped button — and suspiciously short ones.
  • Spacing that differs at the start or end, and translations identical to the source, which usually means untranslated.
  • What is missing: keywords with no text yet in a language.

Each finding is an error (placeholders, ICU, HTML: these break the app), a warning (length, spacing, missing) or info.

In the dashboard

Open a project and click Quality. Filter by severity or language, and download the whole thing as CSV.

In CI

The same report, from the CLI:

npx azbox-cli qa --fail-on error
84 keywords, source EN
  ES: 84 translated, 0 missing, 1 errors, 2 warnings
  FR: 61 translated, 23 missing, 0 errors, 0 warnings

  ✖ ES checkout.pay: Missing in the translation: {amount}
  ! ES home.cta: 214% of the original length: it may not fit

It exits with 1 when there is anything at or above --fail-on (error by default, warning if you want to be strict, none to only report), so a broken placeholder stops the deploy instead of reaching your users. --json and --csv print the full report to store as a build artifact.

Through the API

GET /v1/projects/{projectId}/qa?source=EN&languages=ES,FR

With an API key, like any other read. format=csv for the CSV. See the REST reference.

Next

Call to action background

Start Global Growth Today

Upload your language files, get them translated, and keep every locale in sync as your product keeps changing.

Get Started - It's Free