Severity: Error when used in source; Warning when no usage is found. Used untranslated values cause exit code 1 by default.
What Are Untranslated Values?
An untranslated value occurs when:- A key exists in both the primary locale and a non-primary locale
- The value in the non-primary locale is identical to the primary locale, or is an empty string
- Locale files are copy-pasted and translations are forgotten
- A new key is added to all locales but only translated in the primary locale
- Translations are incomplete or rushed
- Translation tools or scripts create placeholder keys with empty values
Example
Primary locale file:messages/en.json
messages/zh.json
Empty String Values
Non-primary locale with empty string values:messages/zh.json
- File location: Points to the primary locale file (
en.json) as the source of truth - Note: Shows the value and which locales have identical or empty (untranslated) values
- Used: Shows where the key is used in code (clickable in IDEs), or “(no usages found)” if unused
Detection Rules
Glot applies these rules when detecting untranslated values:Only Non-Primary Locales Are Checked
The primary locale (defined in.glotrc.json) is skipped since it’s the source of truth:
.glotrc.json
messages/en.json is never checked for untranslated values.
Values Must Contain Alphabetic Characters
Pure numbers and symbols are skipped since they’re often legitimately the same across locales:Empty String Values Are Flagged
Empty string values in non-primary locales are always flagged, as they clearly indicate missing translations:messages/zh.json
Exact Match Required
For identical value detection, only values that are exactly identical to the primary locale are flagged:messages/en.json
messages/de.json
Severity
Untranslated values are reported as errors by default when the key is used in source because real untranslated UI text reaches users as a product issue. If glot cannot find any source usage for the key, the issue is reported as a warning by default. That means the catalog value still looks untranslated, but glot has not proven that it reaches users. You can still make catalog-only untranslated values fail CI with:glot baseline --rules untranslated --apply can insert suppression comments for current untranslated issues that have source usages. Catalog-only untranslated values with no source usage cannot be suppressed with source comments; translate them, remove unused keys, or use a project-wide severities.untranslated policy.
If your project wants a broader policy change, you can downgrade the rule in .glotrc.json:
Running Untranslated Detection
- npm
- pnpm
- yarn
- bun
bash npx glot check untranslated - npm
- pnpm
- yarn
- bun
bash npx glot check Fixing Untranslated Values
1
Run Check
- npm
- pnpm
- yarn
- bun
2
Review Issues
For each flagged key, determine if it needs translation or should remain the same.
3
Translate Values
Update the non-primary locale files with proper translations:
messages/zh.json
4
Verify
Run the check again to confirm translations are applied:
- npm
- pnpm
- yarn
- bun
Common Scenarios
Legitimate Same Values
Some values should remain identical across locales:glot-disable-next-line untranslated comment near the usage, or use a project-wide severity override if your team intentionally treats these as warnings.
Partial Translations
When adding new features, it’s common to copy keys from the primary locale and forget to translate some:messages/ja.json
Placeholder Text
Sometimes developers use English placeholder text intending to translate later:messages/fr.json
Empty Strings from Translation Tools
Some translation tools or scripts create keys with empty string values as placeholders:messages/ko.json
Related
Check Command
Run untranslated value detection
Missing Keys
Find keys used but not defined
Orphan Keys
Find unused translation keys
Configuration
Configure primary locale