shipglot

stale-translation

Source changed since the translation was locked.

Default severity: warning

What it checks

The source text changed after this translation was recorded in shipglot.lock, and the translation did not change. It may describe the old text. Review it, then run `shipglot lock`.

It needs a committed shipglot.lock: run shipglot lock after translating, and later runs compare against it.

Example

The English text changed after `shipglot lock`; the French text did not. Config used for both runs:

{
  "sourceLocale": "en",
  "files": [
    {
      "format": "next-intl-json",
      "path": "messages/{locale}.json"
    }
  ]
}

Files when shipglot lock ran:

messages/en.json

{
  "trial": "Your trial ends in 14 days."
}

messages/fr.json

{
  "trial": "Votre essai se termine dans 14 jours."
}

Fails

messages/en.json

{
  "trial": "Your trial ends in 30 days."
}

messages/fr.json

{
  "trial": "Votre essai se termine dans 14 jours."
}

Gate output

  • trial
    Source text changed since this fr translation was locked; the translation was not updated.
    messages/fr.json:2

Passes

messages/en.json

{
  "trial": "Your trial ends in 30 days."
}

messages/fr.json

{
  "trial": "Votre essai se termine dans 30 jours."
}

Gate output

No stale-translation finding.

Change its severity

{
  "checks": {
    "stale-translation": "error"
  }
}

Use "off" to disable it. To hide one finding, add "suppress": ["stale-translation:trial"]; a suppress rule that stops matching is reported so it can be removed.

All checks