KAERIS i18n (kaeris-mcp)
Localização por IA direto do seu editor — traduza os arquivos de strings de um app para 46 idiomas com saída segura para placeholders e reproduzível.
Documentação
KAERIS i18n — MCP Server
Localização nativa por IA sobre o Model Context Protocol. Dê ao Claude Desktop, Cursor, Claude Code (ou qualquer cliente MCP) a capacidade de traduzir as strings do seu aplicativo para 46 idiomas — segura para placeholders, ciente de formatos, incremental, com QA de tradução integrado.
Ferramentas
| Ferramenta | O que faz | Chama a API? |
|---|---|---|
kaeris_scan_repo | Descobre a configuração de i18n de um repositório: arquivos de locale encontrados, idioma base, idiomas-alvo, suposição de framework (i18next/next-intl/vue-i18n/Flutter/Android/iOS/gettext/generic) | Não |
kaeris_status | Integridade/saúde por locale-alvo — chaves ausentes, chaves extras, incompatibilidades de placeholders, além dos detectores de qualidade que bloqueiam um merge no CI: desvios numéricos, tags inline perdidas, entidades/escapes quebrados, lacunas de plural do ICU/CLDR (mesmo veredito que o kaeris check --json) | Não |
kaeris_list_missing_keys | As chaves ausentes/quebradas exatas (com texto-fonte) para um locale-alvo, para que um agente saiba exatamente o que corrigir | Não |
kaeris_list_languages | Lista todos os idiomas-alvo suportados | Não |
kaeris_translate | Traduz strings inline → resultados por idioma, com QA (sinalizações de perda de placeholder e estouro de UI; o verify=True faz retro-tradução para verificar o significado) | Sim |
kaeris_translate_file | Traduz um arquivo em disco (JSON/YAML/.strings/.po/ARB/XML/CSV/XLIFF/.properties/.resx/.ftl), incremental opcional — reproduzível via kaeris.lock | Sim |
kaeris_add_language | Inicializa um locale-alvo totalmente novo ao traduzir o arquivo-fonte inteiro para ele | Sim |
As quatro primeiras ferramentas são apenas locais (sem chamada de rede, sem custo) — um agente pode usá-las livremente para auditar e entender o i18n de um repositório antes de decidir o que (se é que algo) traduzir.
Reproduzível por design
O kaeris_translate_file com o incremental=True mantém um kaeris.lock ao lado do seu arquivo-fonte — o mesmo lock que o CLI grava, para que um agente e um humano compartilhando um repositório permaneçam sincronizados. Ele registra um hash de cada string-fonte mais as configurações que a produziram: tom, glossário, contexto do aplicativo e o modelo. Isso significa:
- Edite uma string — apenas essa string é retraduzida; todo o resto permanece byte por byte.
- Mude tom, glossário ou contexto — o locale inteiro é retraduzido, nunca uma mistura de antigo e novo.
- Mude de plano — todos os níveis executam o mesmo modelo (Gemini 2.5 Flash-Lite), então um upgrade não força retradução. O lock registra o modelo de qualquer forma: no dia em que o mudarmos, o locale é reconstruído por completo, em vez de silenciosamente acabar sendo o trabalho de dois modelos.
Faça commit do kaeris.lock junto com seu arquivo-fonte para que o agente, seus colegas de equipe e o CI todos concordem sobre o que já foi feito.
Instalação
pip install kaeris-mcp
Ou execute com Docker
docker build -t kaeris-mcp .
docker run -i --rm -v "$PWD:/work" -w /work kaeris-mcp
O servidor fala JSON-RPC via stdin/stdout, então não há porta para expor — o -i é o que mantém a conversa aberta. Monte seu projeto em /work e as ferramentas cientes do repositório (scan_repo, status, list_missing_keys) o leem diretamente; passe o -e KAERIS_API_KEY=… para os níveis pagos.
Configure seu cliente
Claude Desktop — adicione ao claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"kaeris-i18n": {
"command": "kaeris-mcp",
"env": {
"KAERIS_API_KEY": "kaerisp_optional_for_pro_team"
}
}
}
}
Cursor — Settings → MCP → Add, ou .cursor/mcp.json:
{ "mcpServers": { "kaeris-i18n": { "command": "kaeris-mcp" } } }
Claude Code — um comando:
claude mcp add kaeris-i18n kaeris-mcp
Reinicie o cliente; as ferramentas KAERIS aparecem automaticamente.
Autenticação e níveis (todos opcionais)
| Variável de ambiente | Finalidade |
|---|---|
KAERIS_API_KEY | Chave Pro/Scale — limites maiores (caso contrário, o nível gratuito de 10k caracteres é usado) |
KAERIS_OPENROUTER_KEY | Chave OpenRouter para Lifetime/BYOK — sem limite mensal de volume |
KAERIS_API_URL | Substitui a URL base da API |
Nenhuma chave é necessária para experimentar — o nível anônimo gratuito funciona de imediato.
Exemplos de prompts
- "Traduza as strings em
locales/en.jsonpara alemão, ucraniano e japonês." - "Adicione traduções em francês e espanhol para estes botões: Salvar, Cancelar, Excluir."
- "Traduza apenas as novas chaves que adicionei ao en.json — não refaça o arquivo inteiro."
- "Verifique o i18n deste repositório e me diga o que está ausente ou quebrado." (escaneia e depois reporta o status — sem chamada de API)
- "Ainda não temos ucraniano — adicione." (inicializa um novo locale via tradução)
Licença
MIT