Skip to content
@Shipi18n

Shipi18n

Open-source i18n QA — a locale-file linter and MCP server that catches missing keys, dropped placeholders and mistranslations in CI. BYO LLM key.

Shipi18n

Catch broken translations before you ship

Open-source QA for your i18n locale files. No account, no server, no hosted API — bring your own LLM key, or use the structural checks with no key at all.

Website Docs License


The bug that ships

Your CI lints your JavaScript, typechecks your types, runs your tests — and then ships a de.json nobody has read, produced by a model nobody audited.

en: "This will permanently delete your account"
es: "Esto guardará tu cuenta de forma permanente"     ← "will save"

Every key present. Every placeholder intact. Build green. Key-diffing checkers pass that file. Only reading it catches it.

Found in the wild

We run the check on public repos, verify every finding by hand against the source language, and send the fix upstream. In the first week: Solidus merged 13 pt-BR strings the same day, Plane merged a Czech fix in three hours, a nocodb maintainer swept all 39 locales off one issue, and an Excalidraw contributor added a placeholder-parity test suite off another. 64 repos scanned, 21 shipping a verified broken string, one row per repo with links: shipi18n.com/oss.

Two layers

npx @shipi18n/cli check ./locales -s en

Structural — deterministic, offline, no API key. Missing keys, dropped placeholders ({{name}}, %s, %1$s, $t(...), HTML), collapsed plurals, empty values, coverage. Exit codes, SARIF for PR annotations, JUnit. JSON, YAML, gettext .po, XLIFF, Android strings.xml, Apple .xcstrings, Flutter .arb.

npx @shipi18n/cli check ./locales -s en --semantic

Semantic — an LLM reads each source/translation pair and reports mistranslations, omissions and additions. Your key, changed keys only, 3-pass majority vote. Advisory by default: it warns, it does not fail your build.

Measured on a 228-pair corpus committed before the judge was written, thresholds fixed first: 54/54 planted errors caught, 12/168 false positives on clean pairs (7.1%), glossary 6/6. Label accuracy reproduced as a range, 98.1%–100%, across two runs. The harness is in the repo — run it against your own model.

Packages

Everything lives in one monorepo: Shipi18n/shipi18n

Package npm What it does
@shipi18n/cli npm check your locale files, translate them, lock hand-edited strings
@shipi18n/core npm The engine — checks, LLM judge, translation. Use it as a library
@shipi18n/mcp npm MCP server — validators for Claude Code, Cursor and friends. No API key needed
vite-plugin-shipi18n npm Build-time translation for Vite
shipi18n-github-action — check locale files in CI — SARIF PR annotations, no key; optionally translate what fails

The MCP server's four validator tools (check_locales, check_glossary, diff_locales, review_locales) make zero model calls — review_locales hands the pairs and the criteria back to your agent, which does the judging with its own inference.

More: WordPress .po ↔ JED sync (wp-sync), a secret/PII pre-flight before any string reaches an LLM, and a --baseline mode to adopt on a catalog that already has findings. Runs without Node, too — the ghcr.io/shipi18n/cli Docker image, a pre-commit hook, or GitLab / Bitbucket CI.

Examples

Runnable examples live in the monorepo — examples/: react (Vite + react-i18next), nextjs (App Router), vue (vue-i18n), nodejs (@shipi18n/core).

Retired

Shipi18n used to be a hosted translation API with accounts and paid tiers. That service is shut down. There is no key to get and no bill to pay; the current tools run entirely on your machine against a provider you choose.

These packages are deprecated on npm and their repos are archived: @shipi18n/api · i18next-shipi18n-backend · the standalone shipi18n-cli and vite-plugin-shipi18n repos (the packages live on in the monorepo).


Apache-2.0 · shipi18n.com · Report a bug

Popular repositories Loading

  1. shipi18n-react-example shipi18n-react-example Public archive

    Moved to the Shipi18n monorepo → examples/react. Archived.

    JavaScript

  2. vite-plugin-shipi18n vite-plugin-shipi18n Public archive

    Archived — moved to the Shipi18n monorepo. Vite plugin for build-time i18n translation, bring your own LLM key (no hosted API).

    JavaScript

  3. shipi18n-cli shipi18n-cli Public archive

    Archived — moved to the Shipi18n monorepo, published as @shipi18n/cli. Open-source i18n QA linter + bring-your-own-LLM translation (no hosted API).

    JavaScript

  4. shipi18n-nextjs-example shipi18n-nextjs-example Public archive

    Moved to the Shipi18n monorepo → examples/nextjs. Archived.

    JavaScript

  5. .github .github Public

    Shipi18n organization profile

  6. shipi18n-vue-example shipi18n-vue-example Public archive

    Moved to the Shipi18n monorepo → examples/vue. Archived.

    JavaScript

Repositories

Showing 10 of 12 repositories

Top languages

Loading…

Most used topics

Loading…