Report Structure
Every scan report contains:- Summary metrics - Overall project health at a glance
- Per-locale health cards - Detailed breakdown for each language
- Issue lists - Specific keys that need attention
- Coverage rankings - Locales sorted by completeness
Reports are sorted with the worst-performing locales first, making it easy to identify which languages need the most attention.
Coverage Percentage Explained
What is Coverage?
Coverage represents the percentage of your source locale’s keys that are properly translated in a target locale.translatedKeys= keys that exist AND have non-empty valuestotalSourceKeys= total keys in your source locale (e.g.,en)
Coverage Ranges
90-100% - Excellent
90-100% - Excellent
Your locale is nearly complete. Focus on the few remaining keys and consider this locale production-ready.Action: Review untranslated keys for quality, then deploy with confidence.
70-89% - Good
70-89% - Good
Most content is translated, but there are noticeable gaps. Users will see English fallbacks in some areas.Action: Prioritize high-traffic UI strings and user-facing messages.
40-69% - Needs Attention
40-69% - Needs Attention
Significant portions are untranslated. User experience will be inconsistent.Action: Use Lingo.dev integration to bulk-translate missing keys, then review for accuracy.
0-39% - Critical
0-39% - Critical
This locale is incomplete and should not be deployed. Most content will appear in the source language.Action: Consider removing this locale from production or using one-click fix to bring it up to 100%.
Understanding Metrics
1. Missing Keys
Definition: Keys that exist in your source locale but are completely absent from the target locale file. Example:2. Untranslated Keys
Definition: Keys that exist in the target locale but have empty string values. Example:fr.json
3. Orphan Keys
Definition: Keys that exist in the target locale but are NOT in the source locale. Example:fr.json
- Refactored code where keys were renamed or removed
- Copy-paste errors between locale files
- Legacy features that were removed
How to Prioritize Fixes
Start with the worst coverage
Reports sort locales by coverage (worst first). Focus on languages below 70% coverage.
Fix untranslated keys first
Empty string values are the most damaging because they create blank UI elements.
Use Lingo.dev for bulk translation
For locales with many missing/untranslated keys, use the “Fix with Lingo.dev” button to automatically translate everything, then review.
Common Patterns
Nested Key Flattening
i18n Doctor flattens nested JSON structures with dot notation:New Features = Coverage Drop
If you recently added new UI strings to your source locale, all other locales will show:- Decreased coverage percentage
- New missing keys in the report
Partial Migrations
If you see many missing keys across ALL locales, it might indicate:- A recent key rename or restructuring
- Incomplete migration from an old i18n library
- Multiple source files that aren’t being detected
If your report shows unexpected results, verify that i18n Doctor is detecting all your locale files. Check the scan results for the list of detected files.
Reading the Summary
The summary section aggregates data across all locales:| Metric | Meaning |
|---|---|
| Total Locales | Number of target languages detected (excludes source locale) |
| Avg Coverage | Mean coverage across all locales - your overall i18n health score |
| Total Missing | Sum of all missing keys across all locales |
| Total Untranslated | Sum of all empty string values across all locales |
| Total Orphan | Sum of all unused keys across all locales |
Next Steps
Supported Formats
Learn about JSON, YAML, and gettext file support
Lingo.dev Integration
Use AI-powered translation to fix missing keys