Engineering

Translation QA Tools: Automated Quality Checks for Localized Software

Eray Gündoğmuş
Eray Gündoğmuş
·8 min read
Share
Translation QA Tools: Automated Quality Checks for Localized Software

Translation QA Tools: Automated Quality Checks for Localized Software

Key Takeaways

  • Automated translation QA catches mechanical errors (missing placeholders, broken formatting, inconsistent terminology) that humans often overlook
  • QA should run at multiple stages: during translation, before review, before merge, and before deployment
  • Most TMS platforms include basic QA checks, but dedicated QA tools offer deeper analysis
  • Visual regression testing catches UI issues caused by translated text (truncation, overflow, layout breaks)
  • A layered QA approach — automated mechanical checks + human linguistic review — provides the best quality/cost balance

Why Translation QA Matters

A single missing placeholder in a translation can crash your application. An inconsistent term can confuse users. A truncated label can make a button unusable. Translation QA prevents these issues from reaching production.

Common translation defects by category:

CategoryExampleImpact
Missing placeholder{name} deleted from translationRuntime error or broken UI
Wrong placeholder{username} changed to {user_name}Variable not resolved
TruncationLong German translation in a fixed-width buttonUI element unusable
Terminology"Dashboard" translated three different waysUser confusion
Format errorInvalid JSON in translation fileBuild failure
EncodingNon-UTF-8 characters in translationGarbled text display

Automated QA Check Types

Placeholder Validation

The most critical automated check. Verifies that all variables, placeholders, and interpolation tokens from the source string exist in the translation.

What to check:

  • ICU variables: {name}, {count}
  • HTML tags: <strong>, <a href="...">
  • Format specifiers: %s, %d, %@
  • Custom tokens: {{variable}}, $t(key)

Implementation:

function validatePlaceholders(sourceStr, translatedStr) {
  const pattern = /\{[^}]+\}|<[^>]+>|%[sd@]|\$t\([^)]+\)/g;
  const sourceTokens = (sourceStr.match(pattern) || []).sort();
  const translatedTokens = (translatedStr.match(pattern) || []).sort();

  const missing = sourceTokens.filter(t => !translatedTokens.includes(t));
  const extra = translatedTokens.filter(t => !sourceTokens.includes(t));

  return { valid: missing.length === 0, missing, extra };
}

Terminology Compliance

Verifies that glossary terms are translated consistently:

  • Source term "Dashboard" should always translate to "Tableau de bord" (French), never "Panneau"
  • Brand names should remain untranslated
  • Technical terms should use the approved translation

String Length Validation

Flags translations significantly longer than source text:

  • Strings exceeding source length by more than a configurable threshold (e.g., 150%)
  • Strings longer than a character limit (for UI elements with fixed width)
  • Empty translations (string is blank when source is not)

Format Validation

Ensures translation files are syntactically valid:

  • JSON: Valid JSON, no trailing commas, proper encoding
  • XLIFF: Well-formed XML, correct namespace
  • PO: Matching msgid/msgstr pairs, valid plural forms
  • Properties: Correct escaping for special characters

Consistency Check

Identifies cases where the same source text has multiple different translations, or where similar source texts have inconsistent translations.

Punctuation and Whitespace

  • Double spaces in translations
  • Missing terminal punctuation (source has period, translation doesn't)
  • Incorrect quotation marks for the target locale (French uses « » not " ")
  • Leading/trailing whitespace

QA in Your Workflow

During Translation (In-TMS)

Most TMS platforms run real-time QA as translators work:

  • Highlight missing placeholders immediately
  • Warn about glossary violations
  • Show source/translation length comparison

This catches issues at the point of creation, when they're cheapest to fix.

Before Review

Run comprehensive QA before translations enter the review stage:

  • Full placeholder validation across all strings
  • Terminology compliance check
  • Consistency analysis
  • Length validation

Translations failing critical checks (missing placeholders) should be blocked from review until fixed.

Before Merge (CI/CD)

Add QA checks to your CI/CD pipeline:

# GitHub Actions example
- name: Validate translations
  run: |
    npx translation-qa validate \
      --source src/locales/en.json \
      --translations "src/locales/*.json" \
      --checks placeholders,format,length \
      --max-length-ratio 1.5

Failed checks should block the PR from merging.

Before Deployment

Final verification before translations reach production:

  • All locales meet minimum completeness threshold
  • No critical QA issues remain open
  • Visual regression tests pass

Visual Regression Testing

Text-based QA catches data issues, but visual testing catches UI issues:

What Visual Testing Catches

  • Text overflow from longer translations
  • Truncated labels in fixed-width containers
  • Misaligned elements from different text lengths
  • RTL layout issues
  • Font rendering problems with special characters

Implementation with Playwright

const locales = ['en', 'de', 'ja', 'ar'];
const pages = ['/dashboard', '/settings', '/profile'];

for (const locale of locales) {
  for (const page of pages) {
    await browser.goto(`/${locale}${page}`);
    await browser.screenshot({
      path: `visual-qa/${locale}${page.replace('/', '-')}.png`,
    });
  }
}

Compare screenshots against baseline images to detect layout changes. Tools like Percy, Chromatic, or Playwright's built-in visual comparison handle this automatically.

Dedicated QA Tools

For teams needing deeper analysis than built-in TMS checks:

ToolFocus
VerifikaComprehensive linguistic and technical QA for translation files
QA DistillerPattern-based QA with custom rule definitions
XbenchTerminology and consistency checking
Grammarly/LanguageToolGrammar and spelling for supported languages

These tools are most relevant for enterprise workflows with high quality requirements and large translation volumes.

Building a QA Pipeline

A practical, layered approach:

Layer 1 — Automated (Every Translation):

  • Placeholder validation
  • Format validation
  • Length checks
  • Terminology compliance

Layer 2 — Review (Customer-Facing Content):

  • Human linguistic review for accuracy and naturalness
  • In-context review in staging environment

Layer 3 — Visual (Before Release):

  • Screenshot comparison for key pages and languages
  • RTL layout verification
  • Responsive design check with translated content

Layer 4 — Monitoring (Post-Deployment):

  • User-reported translation issues
  • Error tracking for translation-related runtime errors
  • Analytics for locale-specific bounce rates or support tickets

FAQ

What is the minimum QA every team should have?

At minimum: placeholder validation and format validation in your CI/CD pipeline. These two checks prevent the most impactful issues — runtime crashes from missing variables and build failures from invalid translation files. They're easy to implement and catch problems before they reach users.

How do I handle QA for languages I don't speak?

Automated QA handles mechanical checks regardless of language knowledge. For linguistic quality, you need native speakers — either in-house reviewers, freelance reviewers found through translator marketplaces, or review services offered by your TMS provider. Focus human review budget on your highest-priority markets and content tiers.

Should QA block deployment?

Critical checks (missing placeholders, invalid file format) should block deployment — these cause runtime errors or build failures. Non-critical checks (length warnings, terminology suggestions, consistency notes) should generate warnings but not block. Configure your CI/CD pipeline with appropriate severity levels for each check type.