Shipi18n
OfficialShipi18n
出荷前に壊れた翻訳を検出します。 ロケールファイルのためのオープンソースのQAゲート——そして、必要に応じて、あなた自身のLLMキーで動作するi18n翻訳エンジンでもあります。
英語が Hello {{name}} と言っているのに、あなたの es.json は Hola と言っています。プレースホルダーが消え、ビルドは成功し、バグがリリースされます。Shipi18n はそれを見つけ、さらに難しい種類も見つけます。すべてのプレースホルダーを備えながら、それでも誤った内容を言っている文字列です。

実際の実行であり、モックアップではありません — docs/check-demo.tape で再現できます。
npx @shipi18n/cli check ./locales -s enAPIキー不要、アカウント不要、設定不要。欠落キー、失われたプレースホルダー、折りたたまれた複数形、空の値、未翻訳の文字列を、人間が読める出力、JSON、SARIF(GitHub PRアノテーション)、またはJUnitとして報告します。
そして、意味をチェックしたい場合は、ご自身のキーを持ち込んでください。ジャッジ機能を使用するには、CLIに加えてプロバイダーSDKが必要です:
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 --semanticLLMが各ペアを読み、誤訳、欠落、追加を報告します:
⚠ 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á)すべてのプレースホルダーが無傷で、すべてのキーが存在するため、構造チェックはこのファイルを通過します。バグを検出できるのは、それを読むことだけです。デフォルトではアドバイザリです — 警告はしますが、ビルドを失敗させません。
測定された結果であり、主張ではありません。 ジャッジが書かれる前にコミットされた228ペアのコーパス(
60d699b)で、しきい値を先に固定した上でテスト: 植え込まれたエラー54/54を検出(100%)、正常ペアでの誤検出は12/168(7.1%)、用語集違反は6/6件見つかりました。独立した2回の実行(2026-08-16と2026-08-17)で再現され、claude-haiku-4-5、3パス、約59kトークンを156秒で処理しました。ラベルの精度は実行間で変動しました(100% → 98.1%)— モデルによるものなので、これらは定数ではなく範囲として読んでください。ハーネスはevals/semantic/です。ご自身のモデルで実行してください。
私たちのサーバーを経由するものは何もありません。そもそもサーバーが存在しないからです。唯一のネットワーク呼び出しは、あなたのマシンから選択したプロバイダーへのものです。
パッケージ
パッケージ | 説明 |
エンジン: 翻訳チェック、セマンティックジャッジ、プレースホルダー検証に加え、プロバイダー非依存で構造を保持し、インクリメンタルな翻訳機能を提供。 | |
CI用の | |
MCPサーバー — Claude Desktop、Cursor、または任意のMCPクライアントからロケールファイルをチェック、差分表示、レビューできます。検証にはAPIキーは不要です。 | |
ビルド時にロケールファイルを翻訳するViteプラグイン。キャッシュ付き。 | |
push/PR時に翻訳を同期し続けるGitHub Action。 |
Related MCP server: i18n Agent
なぜ
翻訳の生成は解決済みの問題です。優れたツールがいくつもあり、ロケールファイルを埋めてくれます。エージェントなら無料でやってくれます。しかし、結果をチェックするものは何もありません。 あなたのCIはJavaScriptをリントし、型をチェックし、テストを実行します——そして、誰も読んでいないde.jsonを、誰も監査していないモデルが生成したまま出荷します。
既存のチェックは構造的なものだけです。キー集合の差分を調べて、そこで止まります。それで欠落キーは検出できます。しかし、すべてのキーとすべてのプレースホルダーを持ちながら、ドイツ語のユーザーに意図したことと逆のことを伝える翻訳は検出できません。
Shipi18n は、その欠けていたゲートを2つの層で提供します:
決定的、オフライン、キー不要。 欠落・孤立したキー、欠落または不正なプレースホルダー(
{{name}}、{count}、%s、%d、%1$s、$t(...)、%{name}、HTML)、折りたたまれた複数形、空の値、未翻訳の文字列、言語ごとのカバレッジ。セマンティック、自分のキーで。 変更されたキーだけを対象に、LLMをジャッジとするパスを実行します。単一パスのジャッジスコアは不安定なため、複数パスの多数決を行います。誤訳、欠落、追加を報告します。デフォルトではアドバイザリです — ビルドを失敗させるQAツールはアンインストールされてしまうからです。
さらに、日常的に使えるようにするための機能:
JSONを超えたフォーマット。 Flutterの
.arbとAppleの.xcstringsに対応し、%@/%lld指定子も含みます。CIネイティブ。 正しい終了コード、
--fail-on、--min-coverage、PRアノテーション用のSARIF、JUnit。手動編集を保護。
shipi18n lockは、人間が承認した翻訳を記録し、それらを上書きするものがあれば警告します。ソースがその下で移動した場合も警告します。エディタからキー不要。 MCPサーバーのバリデータはモデルを一切呼び出しません。
翻訳機能も搭載。 プロバイダー非依存で、構造を保持し、インクリメンタル — AnthropicとOpenAIが同梱されており、
complete(prompt)メソッドを持つ任意のオブジェクトが有効なアダプターです。
エディタからチェック — APIキー不要
@shipi18n/mcp は、チェック機能をあらゆるMCPクライアントに提供します。検証ツールはモデルを呼び出さないため、キーはまったく必要ありません:
// claude_desktop_config.json
{
"mcpServers": {
"shipi18n": { "command": "npx", "args": ["-y", "@shipi18n/mcp"] }
}
}「./locales を英語と照合して、スペイン語で何が壊れているか教えてください。」
review_locales は、キーを必要とせずにさらに進みます。翻訳ペアとレビュー基準をエージェントに渡し、エージェントは既に実行中のモデルで意味について推論します。
CIでチェック — キー不要
チェックはあらゆるソースからの翻訳に対して機能します — TMS、他のツール、エージェント、人間など。すべてのプッシュで実行してください:
npx @shipi18n/cli check ./locales -s en欠落キー、失われたプレースホルダー、折りたたまれた複数形、空の値、未翻訳の文字列を、人間が読める出力、JSON、SARIF(GitHub PRアノテーション)、またはJUnitとして報告します。プレーンなJSONツリー、Flutterの.arbバンドル、Appleの.xcstringsカタログで動作します。決定的でオフライン: LLMもAPIキーも不要です。
手動編集された翻訳を保護
文字列を手動で修正し、ロックすると、check は、何かがそれを上書きしようとした場合、または英語側がその下で移動した場合に警告します:
npx @shipi18n/cli lock ./locales --keys 'legal.*'.shipi18n/locks.json はハッシュのみを保存するため、コミットしても安全です。これらの検出結果は警告です — 人間の作業を保護することは、パイプラインを決してブロックしてはなりません。詳細は CLI README を参照してください。
翻訳機能も搭載
チェックはどこからの翻訳でも機能しますが、Shipi18n に翻訳の生成もさせたい場合は、それも可能です — あなたのキーとあなたのモデルを使用し、その間に何も介在しません。
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)またはNodeから(同じSDK要件):
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}}' }構造を保ち、プレースホルダーを安全に扱い、インクリメンタル — 新規または変更されたキーだけがモデルに送信されます。その後、同じツールで結果をチェックできます。
開発
これは pnpm + turbo のモノレポです。
pnpm install
pnpm test # all packages
pnpm --filter @shipi18n/core testバージョン管理はChangesetsが担当します: 追加するには pnpm changeset を実行します。
コントリビューション
Issueとプルリクエストを歓迎します — CONTRIBUTING.md を参照してください。pnpm install && pnpm test はモックアダプターに対して105件のテストを実行するため、これに取り組むのにAPIキーは必要ありません。
ライセンス
Apache-2.0 © Shipi18n。 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