Skip to content

Frozen Translations: Enforce Complete Localization

Prevent incomplete translations from reaching production with Lingo.dev's powerful --frozen flag - your quality gate for localization integrity.

What Does Freezing Do?

When you run:

bash
npx lingo.dev@latest i18n --frozen

Lingo.dev performs a verification-only check that:

  • Scans all source content
  • Identifies missing or outdated translations
  • Returns a failure code if any translations need updating
  • Makes zero changes to your files

This creates a hard requirement that all content must be properly translated before proceeding.

Why It's Essential for Teams

The --frozen flag transforms translation from an optional task to a required step by:

  • Catching Issues Early: Identifies missing translations during CI/CD
  • Enforcing Standards: Prevents partially-translated content from reaching users
  • Maintaining Quality: Ensures consistent experience across all languages
  • Reducing Technical Debt: Prevents translation work from accumulating

How the Verification Works

The process follows these steps:

  1. Scans your source files for translatable content
  2. Compares current state with the last known state (from i18n.lock)
  3. Identifies any new or modified content needing translation
  4. Exits with a non-zero status code if updates are needed

Implementation in CI/CD

Add this to your CI workflow:

yaml
- name: Verify translations
  run: npx lingo.dev@latest i18n --frozen

When this step fails, it signals that someone forgot to update translations before pushing. This creates a safety net that prevents incomplete localizations from reaching your users.

Best Practices

  • Update Locally First: Run npx lingo.dev@latest i18n before pushing changes
  • CI-Only Usage: Use --frozen in CI pipelines, not during development
  • Recovery Process: When CI fails, run translations locally, commit, and push again
  • Team Awareness: Ensure all developers understand this requirement

The Long-Term Benefit

While this approach might seem strict initially, it creates significant advantages:

  • Consistent Quality: Users in all languages get the same experience
  • Early Detection: Translation issues are caught when they're easiest to fix
  • Reduced Costs: Prevents expensive emergency translation requests
  • Better Planning: Makes localization a natural part of the development cycle

By treating missing translations as errors rather than warnings, you ensure your application remains fully accessible to all users as it evolves.