Skip to main content
shipi18n logo|Documentation

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.sarif

The structural checks need no API key. Findings of this rule link back to this page from the SARIF helpUri.

Related rules