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개 발견.claude-haiku-4-5, 3회 패스, 약 59k 토큰, 156초로 2026-08-16과 2026-08-17 두 번의 독립 실행에서 재현되었습니다. 라벨 정확도는 실행 간에 변동했습니다(100% → 98.1%) — 모델이므로 상수로 보지 말고 범위로 읽으세요. 하네스는evals/semantic/입니다. 자신의 모델로 실행해 보세요.
우리 서버를 거치는 것은 없습니다. 서버가 없기 때문입니다. 유일한 네트워크 호출은 사용자 머신에서 선택한 제공자로 가는 것입니다.
Packages
Package | Description |
엔진: 번역 검사, 의미 판정, 플레이스홀더 검증 — 그리고 제공자에 구애받지 않고 구조를 보존하는 증분 모드 번역. | |
CI용 | |
MCP 서버 — Claude Desktop, Cursor 또는 모든 MCP 클라이언트에서 로케일 파일을 검사, 비교, 검토합니다. 검증에는 API 키가 필요 없습니다. | |
빌드 시 로케일 파일을 번역하고 캐싱하는 Vite 플러그인. | |
push/PR 시 번역을 동기화하는 GitHub Action. |
Related MCP server: i18n Agent
Why
번역 생성은 해결된 문제입니다. 좋은 도구가 로케일 파일을 채워 주고, 에이전트가 무료로 해 주기도 합니다. 하지만 결과를 검사하는 도구는 없습니다. CI는 JavaScript를 린트하고, 타입을 검사하고, 테스트를 실행합니다 — 그리고 아무도 읽지 않은 de.json을 배포합니다. 아무도 감사하지 않은 모델이 만든 것입니다.
기존 검사는 구조적입니다: 키 집합을 비교하고 거기서 멈춥니다. 누락된 키는 잡아내지만, 모든 키와 모든 플레이스홀더가 있는데도 독일어 사용자에게 의도와 반대되는 내용을 전달하는 번역은 잡아내지 못합니다.
Shipi18n은 그 누락된 게이트입니다. 두 계층으로 구성됩니다:
결정적, 오프라인, 키 없음. 누락되거나 고아가 된 키, 빠지거나 잘못된 플레이스홀더(
{{name}},{count},%s,%d,%1$s,$t(...),%{name}, HTML), 축약된 복수형, 빈 값, 번역되지 않은 문구, 언어별 커버리지.의미적, 자신의 키 사용. 변경된 키에 대해서만 LLM-as-judge 패스를 실행하며, 단일 패스 판정 점수는 불안정하므로 다중 패스 다수결 투표를 사용합니다. 오역, 누락, 추가를 보고합니다. 기본적으로 권고 사항입니다 — 빌드를 실패시키는 QA 도구는 곧 제거됩니다.
그리고 일상적으로 사용할 수 있게 해 주는 부분들:
JSON 외의 형식. Flutter
.arb및 Apple.xcstrings,%@/%lld지정자 포함.CI 네이티브. 올바른 종료 코드,
--fail-on,--min-coverage, PR 주석용 SARIF, JUnit.수동 편집 보호.
shipi18n lock은 사람이 승인한 번역을 기록하고, 어떤 것이 덮어쓰거나 소스가 그 아래에서 이동하면 경고합니다.에디터에서 키 없이. MCP 서버의 검증기는 모델을 전혀 호출하지 않습니다.
번역도 합니다. 제공자에 구애받지 않고, 구조를 보존하며, 증분 방식 — Anthropic과 OpenAI가 기본 제공되며,
complete(prompt)메서드가 있는 모든 객체는 유효한 어댑터입니다.
Check from your editor — no API key
@shipi18n/mcp는 모든 MCP 클라이언트에 검사를 제공합니다. 검증 도구는 모델을 호출하지 않으므로 키가 전혀 필요 없습니다:
// claude_desktop_config.json
{
"mcpServers": {
"shipi18n": { "command": "npx", "args": ["-y", "@shipi18n/mcp"] }
}
}"
./locales를 영어와 비교해서 스페인어에서 무엇이 깨졌는지 알려줘."
review_locales는 키 없이도 더 나아갑니다: 에이전트에게 번역 쌍과 검토 기준을 넘겨주면, 에이전트는 이미 실행 중인 모델로 의미를 추론합니다.
Check in CI — no key needed
검사는 어떤 소스의 번역에서도 작동합니다 — TMS, 다른 도구, 에이전트, 사람. 모든 push에 실행하세요:
npx @shipi18n/cli check ./locales -s en누락된 키, 빠진 플레이스홀더, 축약된 복수형, 빈 값, 번역되지 않은 문구 — 사람이 읽을 수 있는 출력, JSON, SARIF(GitHub PR 주석) 또는 JUnit으로 보고됩니다. 일반 JSON 트리, Flutter .arb 번들, Apple .xcstrings 카탈로그에서 작동합니다. 결정적이고 오프라인: LLM도 API 키도 없습니다.
Protect hand-edited translations
문자열을 수동으로 수정하고 잠그면, check는 어떤 것이 덮어쓰거나 영어가 그 아래에서 이동하면 경고합니다:
npx @shipi18n/cli lock ./locales --keys 'legal.*'.shipi18n/locks.json은 해시만 저장하므로 커밋해도 안전하며, 이러한 결과는 경고입니다 — 인간의 작업을 보호하는 것이 파이프라인을 막아서는 안 됩니다. 자세한 내용은 CLI README를 참조하세요.
It also translates
검사는 어디서든 가져온 번역에서 작동하지만, 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}}' }구조를 보존하고, 플레이스홀더에 안전하며, 증분 방식 — 새로 추가되거나 변경된 키만 모델로 보냅니다. 그런 다음 같은 도구로 결과를 검사하세요.
Development
이것은 pnpm + turbo 모노레포입니다.
pnpm install
pnpm test # all packages
pnpm --filter @shipi18n/core testChangesets가 버전 관리를 담당합니다: pnpm changeset으로 추가하세요.
Contributing
이슈와 풀 리퀘스트를 환영합니다 — CONTRIBUTING.md를 참조하세요. pnpm install && pnpm test는 모의 어댑터로 105개의 테스트를 실행하므로, 이 작업에 API 키가 필요 없습니다.
License
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