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:
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:
- Scans your source files for translatable content
- Compares current state with the last known state (from
i18n.lock
) - Identifies any new or modified content needing translation
- Exits with a non-zero status code if updates are needed
Implementation in CI/CD
Add this to your CI workflow:
- 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.