Shipi18n
OfficialShipi18n
Ловите битые переводы до того, как они уйдут в релиз. QA-шлюз с открытым исходным кодом для ваших locale-файлов — и, когда нужно, движок перевода i18n, работающий на вашем собственном LLM-ключе.
Ваш es.json говорит Hola там, где английский — Hello {{name}}. Плейсхолдер пропал, сборка зелёная, и баг уходит в релиз. Shipi18n находит это — и находит более сложный случай: строку, в которой есть все плейсхолдеры, но смысл всё равно неверный.

Реальный запуск, а не макет — docs/check-demo.tape воспроизводит его.
npx @shipi18n/cli check ./locales -s enНи API-ключа, ни аккаунта, ни конфигурации. Отсутствующие ключи, потерянные плейсхолдеры, схлопнутые плюральные формы, пустые значения и непереведённый текст — в виде человекочитаемого вывода, JSON, SARIF (аннотации в GitHub PR) или JUnit.
Затем, когда нужно проверить смысл, приносите свой ключ. Судье нужен SDK провайдера вместе с 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 --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 нарушений глоссария. Воспроизведено в двух независимых запусках (2026-08-16 и 2026-08-17) сclaude-haiku-4-5, 3 проходами, ~59k токенов за 156 с. Точность меток менялась между запусками (100% → 98.1%) — это модель, так что воспринимайте эти цифры как диапазон, а не константу. Тестовый стенд —evals/semantic/. Запускайте его на своей модели.
Ничего не проходит через наши серверы, потому что их нет. Единственный сетевой вызов — с вашей машины к выбранному вами провайдеру.
Пакеты
Пакет | Описание |
Движок: проверки переводов, семантический судья, валидация плейсхолдеров — плюс независимый от провайдера перевод с сохранением структуры и инкрементальным режимом. | |
| |
MCP-сервер — проверяйте, сравнивайте и ревьюйте locale-файлы из Claude Desktop, Cursor или любого MCP-клиента. Для валидации не нужен API-ключ. | |
Vite-плагин, который переводит locale-файлы на этапе сборки, с кэшированием. | |
GitHub Action, который синхронизирует переводы при push/PR. |
Related MCP server: i18n Agent
Зачем
Генерация переводов — решённая задача. Полдюжины хороших инструментов заполнят ваши locale-файлы, а агент сделает это бесплатно. Но результат не проверяет никто. Ваш CI линтит ваш JavaScript, проверяет типы и запускает тесты — а затем в релиз уходит de.json, который никто не читал и который создала модель, которую никто не проверял.
Существующие проверки — структурные: они сравнивают множества ключей и на этом останавливаются. Это ловит отсутствующий ключ. Но не ловит перевод, в котором есть все ключи и все плейсхолдеры и который при этом говорит вашим немецким пользователям противоположное тому, что вы имели в виду.
Shipi18n — это тот самый недостающий шлюз, состоящий из двух уровней:
Детерминированный, офлайн, без ключа. Отсутствующие и осиротевшие ключи, потерянные или повреждённые плейсхолдеры (
{{name}},{count},%s,%d,%1$s,$t(...),%{name}, HTML), схлопнутые плюральные формы, пустые значения, непереведённый текст, покрытие по каждому языку.Семантический, с вашим собственным ключом. Проход LLM-в-роли-судьи только по изменённым ключам, с многопроходным голосованием большинством, потому что оценки судьи за один проход нестабильны. Сообщает о неверном переводе, пропуске и добавлении. По умолчанию рекомендательный: QA-инструмент, который валит сборку, удаляют.
Плюс части, которые делают его удобным в повседневной работе:
Форматы помимо JSON. Flutter
.arbи Apple.xcstrings, включая спецификаторы%@/%lld.Нативный для CI. Корректные коды выхода,
--fail-on,--min-coverage, SARIF для аннотаций в PR, 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, другого инструмента, агента, человека. Запускайте его при каждом push:
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 — чтобы добавить.
Участие в разработке
Принимаются issues и пул-реквесты — см. CONTRIBUTING.md. pnpm install && pnpm test запускает 105 тестов против mock-адаптера, так что для работы над проектом 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