Skip to main content

Shipi18n vs i18n-check

@lingual/i18n-check is an actively maintained open-source CLI that validates locale files structurally — missing, invalid, unused and undefined keys — for ICU, i18next, react-intl and next-intl projects.

TL;DR

Choose i18n-check for fast, dependency-light key-diffing — it is good at it, actively maintained, and its unused/undefined-key detection scans your source code, which Shipi18n does not do today. Choose Shipi18n when you also want the semantic layer (an LLM reading each pair for mistranslations key-diffing cannot see), mobile formats (.arb, .xcstrings) and SARIF-annotated PRs. Running both is perfectly reasonable.

Pricing Comparison

Shipi18n

Open Source
LicenseFree — Apache-2.0
UsageYour provider’s token cost
SeatsUnlimited, no per-seat fee

No subscription and no account. You pay your LLM provider directly, at their prices.

i18n-check

Open-source key checker
StarterFree — open source
TeamFree
Enterprise

No hosted service; runs locally and in CI.

Feature Comparison

FeatureShipi18ni18n-check
Free Tier KeysUnlimitedUnlimited (OSS)
Free Tier LanguagesUnlimitedUnlimited (OSS)
AI TranslationYour own model (Anthropic, OpenAI, or custom)None (checker only)
Semantic Translation QAYes — LLM judge, 3-pass vote, advisory by defaultNo — structural checks only
Placeholder Preservation
CLI Tool
Programmatic API
GitHub Action
Translation CacheBuild-time cache + incremental mode
SupportGitHub Issues + DiscordGitHub Issues

i18n-check Pros & Cons

Pros

  • +Actively maintained with frequent releases
  • +Widely used (six-figure weekly npm downloads)
  • +Unused/undefined key detection via source scanning
  • +ICU, i18next, react-intl and next-intl support
  • +Lightweight, no LLM or API key anywhere

Cons

  • -Structural checks only — no semantic layer, so a fluent mistranslation passes
  • -JSON/YAML focus — no Flutter .arb or Apple .xcstrings
  • -No GitHub Action or editor extension shipped
  • -No SARIF output for inline PR annotations
  • -No glossary/terminology enforcement

Which Should You Choose?

Choose i18n-check if you...

  • Teams that want pure key-diffing with zero model involvement
  • react-intl and next-intl projects
  • Catching unused keys via source-code scanning
  • Minimal-dependency CI setups

Choose Shipi18n if you...

  • Want open-source tooling you can read, fork and vendor
  • Would rather pay your LLM provider directly than a middleman
  • Need your source strings to stay out of a third party's database
  • Want translation in CI, your editor, or your build — not another dashboard
  • Have no interest in seats, quotas or annual contracts

See How Simple Shipi18n Is

# Translate your en.json to 5 languages in seconds
$ export ANTHROPIC_API_KEY=your-key-here
$ npx @shipi18n/cli translate en.json --target es,fr,de,ja,zh

✓ Translated to 5 languages!
✓ Saved: ./locales/es.json
✓ Saved: ./locales/fr.json
✓ Saved: ./locales/de.json
✓ Saved: ./locales/ja.json
✓ Saved: ./locales/zh.json

Done in 3.2s

No account, no contract, no dashboard. Just translations.

Ready to Ship in Every Language?

Start with 100 free translation keys. No credit card required. Upgrade when you need more.