Skip to main content
Glama

Shipi18n

CI npm MCP ライセンス

出荷前に壊れた翻訳を検出します。 ロケールファイルのためのオープンソースのQAゲート——そして、必要に応じて、あなた自身のLLMキーで動作するi18n翻訳エンジンでもあります。

英語が Hello {{name}} と言っているのに、あなたの es.jsonHola と言っています。プレースホルダーが消え、ビルドは成功し、バグがリリースされます。Shipi18n はそれを見つけ、さらに難しい種類も見つけます。すべてのプレースホルダーを備えながら、それでも誤った内容を言っている文字列です。

shipi18n checkが欠落したプレースホルダーを検出し、その後LLMが英語では「delete」である翻訳を「will save」と訳しているのを検出する様子

実際の実行であり、モックアップではありません — docs/check-demo.tape で再現できます。

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

APIキー不要、アカウント不要、設定不要。欠落キー、失われたプレースホルダー、折りたたまれた複数形、空の値、未翻訳の文字列を、人間が読める出力、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 --semantic

LLMが各ペアを読み、誤訳、欠落、追加を報告します:

⚠ 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/ です。ご自身のモデルで実行してください。

私たちのサーバーを経由するものは何もありません。そもそもサーバーが存在しないからです。唯一のネットワーク呼び出しは、あなたのマシンから選択したプロバイダーへのものです。

パッケージ

パッケージ

説明

@shipi18n/core

エンジン: 翻訳チェック、セマンティックジャッジ、プレースホルダー検証に加え、プロバイダー非依存で構造を保持し、インクリメンタルな翻訳機能を提供。

@shipi18n/cli

CI用のshipi18n check ./locales、意味を確認する--semantic、手動編集を保護するlock、必要なときに使うtranslate

@shipi18n/mcp

MCPサーバー — Claude Desktop、Cursor、または任意のMCPクライアントからロケールファイルをチェック、差分表示、レビューできます。検証にはAPIキーは不要です。

vite-plugin-shipi18n

ビルド時にロケールファイルを翻訳するViteプラグイン。キャッシュ付き。

shipi18n-github-action

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 を参照してください。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
2wRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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