orphan-key: translation keys that no longer exist in the source
warning — advisory, exit 0
A key present in a translation file has no counterpart in the source language. Usually it is dead weight left behind after a source key was renamed or deleted — the translation still carries the old key, and nothing will ever read it.
What triggers it
// en.json
{ "title": "Settings" }
// de.json
{ "title": "Einstellungen", "old_title": "Optionen" } // orphanFixed
// de.json
{ "title": "Einstellungen" }Why it matters
Orphans inflate file size, confuse translators ("do I update this?"), and mask real drift between locales.
How to fix it
Delete the orphaned keys from the translation files.
How to silence it
A warning by default, so it never fails CI unless you set --fail-on warning. Silence specific keys with --ignore-keys.
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
- stale-translation — translations marked as needing review