untranslated: untranslated strings identical to the source
warning — advisory, exit 0
A multi-word translation is byte-identical to the source string — almost always a copy-paste placeholder that never got translated. Single words are exempt, because plenty of words are legitimately identical across languages.
What triggers it
// en.json
{ "cta": "Start your free trial today" }
// de.json
{ "cta": "Start your free trial today" }Fixed
// de.json
{ "cta": "Starte noch heute deine kostenlose Testphase" }Why it matters
Untranslated strings are the visible face of a stalled i18n process — the page is "localised" and half of it reads in English.
How to fix it
Translate the string, or run shipi18n translate to fill exactly the flagged keys.
How to silence it
A warning by default. Product names and terms that must stay identical belong in a glossary file (--glossary) as do-not-translate entries — that documents the intent instead of silencing the finding.
Check for this in CI
npx @shipi18n/cli check ./locales -s en
# SARIF for inline PR annotations:
npx @shipi18n/cli check ./locales -s en -r sarif -o shipi18n.sarifThe structural checks need no API key. Findings of this rule link back to this page from the SARIF helpUri.
Related rules
- missing-key — missing translation keys
- empty-value — empty translation values
- glossary-violation — glossary term translated or altered