Shipi18n
OfficialShipi18n
Fange kaputte Übersetzungen ab, bevor du sie auslieferst. Ein Open-Source-QA-Gate für deine Locale-Dateien – und, wenn du es möchtest, eine i18n-Übersetzungs-Engine, die mit deinem eigenen LLM-Schlüssel läuft.
Deine es.json sagt Hola, wo das Englische Hello {{name}} sagt. Der Platzhalter ist weg, der Build ist grün, und der Bug geht raus. Shipi18n findet das – und es findet auch die schwierigere Art: den String, der jeden Platzhalter hat und trotzdem das Falsche sagt.

Ein echter Lauf, kein Mockup – docs/check-demo.tape reproduziert ihn.
npx @shipi18n/cli check ./locales -s enKein API-Schlüssel, kein Konto, keine Konfiguration. Fehlende Schlüssel, verlorene Platzhalter, zusammengefallene Pluralformen, leere Werte und unübersetzter Text – als menschenlesbare Ausgabe, JSON, SARIF (GitHub-PR-Anmerkungen) oder JUnit.
Wenn du dann die Bedeutung prüfen willst, bring deinen eigenen Schlüssel mit. Der Judge benötigt ein Provider-SDK neben der CLI:
npm i -D @shipi18n/cli @anthropic-ai/sdk # or `openai`
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY
npx shipi18n check ./locales -s en --semanticEin LLM liest jedes Paar und meldet Fehlübersetzungen, Auslassungen und Hinzufügungen:
⚠ es coverage 100.0% 0 error(s), 1 warning(s)
warning delete semantic-mistranslation — Translation says 'will save' (guardará)
instead of 'will delete' (eliminará/borrará)Jeder Platzhalter ist intakt und jeder Schlüssel ist vorhanden, also bestehen strukturelle Prüfungen diese Datei. Nur das Lesen fängt den Bug. Standardmäßig beratend – es warnt, es lässt deinen Build nicht fehlschlagen.
Gemessen, nicht behauptet. Auf einem Korpus von 228 Paaren, der vor dem Schreiben des Judges committet wurde (
60d699b) und mit zuerst festgelegten Schwellenwerten: 54/54 eingepflanzte Fehler gefunden (100%) und 12/168 falsch positive Ergebnisse bei sauberen Paaren (7,1%), mit 6/6 gefundenen Glossar-Verstößen. Reproduziert in zwei unabhängigen Läufen (2026-08-16 und 2026-08-17) mitclaude-haiku-4-5, 3 Durchgängen, ~59k Tokens in 156s. Die Label-Genauigkeit variierte zwischen den Läufen (100% → 98,1%) – es ist ein Modell, also lies das als Bereich, nicht als Konstante. Das Harness istevals/semantic/. Führe es gegen dein eigenes Modell aus.
Nichts läuft über unsere Server, denn es gibt keine. Der einzige Netzwerkaufruf geht von deiner Maschine zum Anbieter deiner Wahl.
Packages
Package | Description |
Die Engine: Übersetzungsprüfungen, der semantische Judge, Platzhaltervalidierung – plus anbieterunabhängige, strukturerhaltende Übersetzung mit inkrementellem Modus. | |
| |
MCP-Server – prüfe, diff und überprüfe Locale-Dateien von Claude Desktop, Cursor oder jedem MCP-Client. Validierung benötigt keinen API-Schlüssel. | |
Vite-Plugin, das Locale-Dateien zur Build-Zeit übersetzt, mit Caching. | |
GitHub Action, die Übersetzungen bei Push/PR synchron hält. |
Related MCP server: i18n Agent
Why
Übersetzungen zu generieren ist ein gelöstes Problem. Ein halbes Dutzend guter Tools füllt deine Locale-Dateien, und ein Agent macht es kostenlos. Nichts prüft das Ergebnis. Dein CI lintet dein JavaScript, typprüft deine Typen und führt deine Tests aus – und liefert dann eine de.json aus, die niemand gelesen hat, erzeugt von einem Modell, das niemand geprüft hat.
Die Prüfungen, die es gibt, sind strukturell: Sie vergleichen Schlüsselmengen und hören dort auf. Das fängt den fehlenden Schlüssel. Es fängt nicht die Übersetzung, die jeden Schlüssel und jeden Platzhalter hat und deinen deutschen Nutzern trotzdem das Gegenteil von dem sagt, was du meintest.
Shipi18n ist dieses fehlende Tor, in zwei Ebenen:
Deterministisch, offline, ohne Schlüssel. Fehlende und verwaiste Schlüssel, verlorene oder fehlerhafte Platzhalter (
{{name}},{count},%s,%d,%1$s,$t(...),%{name}, HTML), zusammengefallene Pluralformen, leere Werte, unübersetzter Text, Abdeckung pro Sprache.Semantisch, mit deinem eigenen Schlüssel. Ein LLM-als-Judge-Durchlauf nur über geänderte Schlüssel, mit Mehrheitsvotum über mehrere Durchläufe, weil Einzeldurchlauf-Judge-Scores instabil sind. Meldet Fehlübersetzung, Auslassung und Hinzufügung. Standardmäßig beratend – ein QA-Tool, das deinen Build fehlschlagen lässt, wird deinstalliert.
Plus die Teile, die es im Alltag nutzbar machen:
Formate über JSON hinaus. Flutter
.arbund Apple.xcstrings, einschließlich%@/%lld-Spezifikatoren.CI-nativ. Korrekte Exit-Codes,
--fail-on,--min-coverage, SARIF für PR-Anmerkungen, JUnit.Manuelle Bearbeitungen sind geschützt.
shipi18n lockzeichnet die Übersetzungen auf, die ein Mensch abgesegnet hat, und warnt, wenn etwas sie überschreibt oder wenn sich die Quelle darunter verschiebt.Schlüssellos aus deinem Editor. Die Validatoren des MCP-Servers rufen überhaupt kein Modell auf.
Es übersetzt auch. Anbieterunabhängig, strukturerhaltend, inkrementell – Anthropic und OpenAI sind enthalten, und jedes Objekt mit einer
complete(prompt)-Methode ist ein gültiger Adapter.
Check from your editor — no API key
@shipi18n/mcp bringt die Prüfungen in jeden MCP-Client. Die Validierungswerkzeuge rufen kein Modell auf, brauchen also überhaupt keinen Schlüssel:
// claude_desktop_config.json
{
"mcpServers": {
"shipi18n": { "command": "npx", "args": ["-y", "@shipi18n/mcp"] }
}
}"Prüfe ./locales gegen Englisch und sag mir, was auf Spanisch kaputt ist."
review_locales geht noch weiter, ohne ebenfalls einen Schlüssel zu benötigen: Es übergibt deinem Agenten die Übersetzungspaare und die Bewertungskriterien, und dein Agent denkt mit dem Modell, das er bereits ausführt, über die Bedeutung nach.
Check in CI — no key needed
Die Prüfungen funktionieren mit Übersetzungen aus jeder Quelle – einem TMS, einem anderen Tool, einem Agenten, einem Menschen. Führe es bei jedem Push aus:
npx @shipi18n/cli check ./locales -s enFehlende Schlüssel, verlorene Platzhalter, zusammengefallene Pluralformen, leere Werte und unübersetzter Text – gemeldet als menschenlesbare Ausgabe, JSON, SARIF (GitHub-PR-Anmerkungen) oder JUnit. Funktioniert mit einfachen JSON-Bäumen, Flutter-.arb-Bündeln und Apple-.xcstrings-Katalogen. Deterministisch und offline: kein LLM, kein API-Schlüssel.
Protect hand-edited translations
Korrigiere einen String von Hand, sperre ihn, und check warnt dich, wenn etwas ihn jemals überschreibt – oder wenn sich das Englische darunter verschiebt:
npx @shipi18n/cli lock ./locales --keys 'legal.*'.shipi18n/locks.json speichert nur Hashes, ist sicher zu committen, und diese Befunde sind Warnungen – der Schutz menschlicher Arbeit darf niemals eine Pipeline blockieren. Details im CLI-README.
It also translates
Die Prüfung funktioniert mit Übersetzungen von überall, aber wenn du möchtest, dass Shipi18n sie auch erzeugt, tut es das – mit deinem Schlüssel, deinem Modell und nichts dazwischen.
npm i -D @shipi18n/cli @anthropic-ai/sdk # or `openai`
export ANTHROPIC_API_KEY=sk-ant-... # or OPENAI_API_KEY
npx shipi18n translate locales/en.json -t es,fr,de✔ es → locales/es.json (2 translated, 0 reused)Oder aus Node (gleiche SDK-Anforderung):
import { translateJSON } from '@shipi18n/core'
const { result, stats } = await translateJSON({
content: { greeting: 'Hello {{name}}' },
from: 'en',
to: 'es',
provider: 'anthropic', // 'anthropic' | 'openai' | custom { complete } adapter
})
// result → { greeting: 'Hola {{name}}' }Strukturerhaltend, platzhaltersicher und inkrementell – nur neue oder geänderte Schlüssel werden an das Modell gesendet. Prüfe das Ergebnis dann mit demselben Tool.
Development
Dies ist ein pnpm- + turbo-Monorepo.
pnpm install
pnpm test # all packages
pnpm --filter @shipi18n/core testChangesets verwalten die Versionierung: pnpm changeset zum Hinzufügen eines.
Contributing
Issues und Pull-Requests sind willkommen – siehe CONTRIBUTING.md. pnpm install && pnpm test führt 105 Tests gegen einen Mock-Adapter aus, du brauchst also keinen API-Schlüssel, um daran zu arbeiten.
License
Apache-2.0 © Shipi18n. Siehe NOTICE.
This server cannot be installed
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables translation of JSON i18n files to multiple languages using various AI providers (Google Gemini, OpenAI, Ollama/DeepSeek) with intelligent caching and deduplication.166
- AlicenseNot gradedqualityDmaintenanceAI-powered translation management built for AI agents. Automate localization with regional sensitivity and zero TMS overhead. Works with Claude Code, Cursor, VS Code via MCP protocol. Supports JSON, YAML, Markdown, PO and more.12MIT
- AlicenseNot gradedqualityBmaintenanceLocalization as code — push, pull, translate, and extract strings from code with AI. 7 MCP tools for type-safe i18n across 182 languages.1742MIT
- FlicenseAqualityCmaintenanceL1-aware grammar, style, translation & tone tools with 70 local rules. Zero API keys needed.4
Related MCP Connectors
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
Translation that never breaks structure: .srt timings, i18n key trees, PDF layout.
AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Shipi18n/shipi18n'
If you have feedback or need assistance with the MCP directory API, please join our Discord server