> ## Documentation Index
> Fetch the complete documentation index at: https://chatcli.edilsonfreitas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Internacionalização (i18n)

> O ChatCLI suporta múltiplos idiomas com detecção automática e fallback inteligente.

O ChatCLI foi projetado para ser global. A interface do usuário, incluindo menus, dicas e mensagens de status, é totalmente internacionalizada.

## Idiomas suportados

| Idioma                 | Código  | Status                     |
| ---------------------- | ------- | -------------------------- |
| **Português (Brasil)** | `pt-BR` | Completo                   |
| **Inglês**             | `en`    | Completo (fallback padrão) |

***

## Detecção automática

O idioma é detectado automaticamente a partir das variáveis de ambiente do sistema, na seguinte ordem de prioridade:

| Prioridade | Variável       | Exemplo       |
| ---------- | -------------- | ------------- |
| 1 (maior)  | `CHATCLI_LANG` | `pt-BR`       |
| 2          | `LANG`         | `pt_BR.UTF-8` |
| 3          | `LC_ALL`       | `pt_BR.UTF-8` |

Se nenhuma variável estiver definida ou o idioma não for suportado, a interface será exibida em **inglês** por padrão.

***

## Forçar um idioma

Para forçar um idioma específico, defina `CHATCLI_LANG` no `.env` ou no ambiente:

```bash theme={"system"}
# No .env
CHATCLI_LANG=pt-BR

# Ou via export
export CHATCLI_LANG=en
```

***

## Cobertura

O sistema de i18n conta com **1925 chaves de tradução** cobrindo todas as strings voltadas ao usuário (paridade entre `en.json`, `en-US.json` e `pt-BR.json`). Cada novo user-facing string introduzido no código passa pelo wrapping `i18n.T()` — **regra obrigatória** para qualquer handler de comando, autocomplete `prompt.Suggest` ou mensagem de erro visível ao usuário.

<Info>
  A partir do sweep de i18n de abr/2026, todos os slash commands (`/hooks`, `/mcp`, `/worktree`, `/cost`, `/channel`, `/websearch`, `/config` + subseções, `/skill`, `/agent`, `/memory`, `/session`, `/switch`, `/context`, `/auth`, `/plugin`) e o autocomplete da CLI passam 100% por `i18n.T`. Strings hardcoded em PT/EN dentro de `fmt.Println` ou `colorize(...)` são bug de conformidade.
</Info>

## O que é traduzido

* Menus e prompts interativos
* Mensagens de status e progresso (inclusive as fases do compactor de histórico: trim, summarize, emergency)
* Ajuda dos comandos (`/help`)
* Mensagens de erro e avisos
* UI do modo agente (plano de execução, ações)
* Feedback do modo coder
* Mensagens de pre-flight e recuperação de payload (413/WAF/EOF) com rotulagem específica por tipo de falha
* Mensagens do servidor e conexão remota
* Comandos de sessão, contexto e plugins
* Notificações do K8s Watcher e Operator

### Namespaces principais

| Prefixo da chave                                                       | Escopo                                                                                                                                                                           |
| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `welcome.*`, `help.*`                                                  | Boas-vindas, ajuda e onboarding                                                                                                                                                  |
| `agent.*`                                                              | Modo agente, turnos, plano de ação                                                                                                                                               |
| `agent.microcompact.*`                                                 | Compactação progressiva de tool results antigos (sem LLM)                                                                                                                        |
| `agent.preflight.*`                                                    | Avisos proativos de tamanho de histórico vs cap de proxy                                                                                                                         |
| `agent.recovery.*`                                                     | Recuperação de context overflow + proxy 413/WAF/EOF                                                                                                                              |
| `coder.*`                                                              | Modo coder, cards e decisões de policy                                                                                                                                           |
| `compact.*`                                                            | Comando `/compact` (manual e guiado)                                                                                                                                             |
| `compact.status.*`                                                     | Feedback ao vivo durante cada fase do pipeline de compactação                                                                                                                    |
| `context.*`                                                            | Comandos `/context attach`, `/context show`, etc                                                                                                                                 |
| `cmd.*`                                                                | Comandos CLI legados (`/auth`, `/connect`, `/switch`, ...)                                                                                                                       |
| `cmd.core.*`                                                           | `/session fork` e afins no `command_handler` core                                                                                                                                |
| `cfg.*`                                                                | `/config` hierárquico — títulos de seção, labels kv, placeholders (`cfg.val.*`, `cfg.kv.*`, `cfg.sub.*`, `cfg.panorama.*`, `cfg.section.*`, `cfg.msg.*`)                         |
| `hooks.cmd.*` / `mcp.cmd.*` / `wt.cmd.*` / `cost.cmd.*` / `chan.cmd.*` | Um namespace por slash-command gerenciador (`/hooks`, `/mcp`, `/worktree`, `/cost`, `/channel`)                                                                                  |
| `skill.cmd.*` / `persona.cmd.*` / `mem.cmd.*`                          | Handlers `skill_handler`, `persona_handler`, `memory_command`                                                                                                                    |
| `sw.cmd.*` / `sess.cmd.*` / `ctx.cmd.*`                                | Fills de `cli_llm` (`handleSwitchCommand`), `cli_session`, `context_handler`                                                                                                     |
| `ws.cmd.*`                                                             | Comando `/websearch` (status, list, provider, reset)                                                                                                                             |
| `complete.*`                                                           | Descrições de autocomplete — `complete.root.*` para slash commands top-level, `complete.{connect,watch,context,session,plugin,agent,skill,switch,auth,generic}.*` para sub/flags |
| `llm.*`                                                                | Streaming, erros de provider                                                                                                                                                     |
| `server.*`                                                             | Modo servidor e autenticação                                                                                                                                                     |

### Padrão especial para instruções à IA

A chave `ai.response_language` é um meta-comando **escrito em inglês** em todos os locales (incluindo pt-BR), que **instrui a IA a responder no idioma do usuário**. Isso é intencional: modelos LLM seguem instruções em inglês com muito mais fidelidade, então o prompt que pede "responda em pt-BR" é escrito em inglês. O conteúdo da resposta, claro, sai em pt-BR.

Essa instrução é anexada ao system prompt nos três modos (`chat`, `agent`, `coder`), junto com um `[ACTIVE MODE: ...]` que deixa claro para a IA em qual modo ela está operando. Veja `cli/prompts.go` e `cli/cli_llm.go`.

<Info>
  As respostas da IA são no idioma que você usar na conversa — a i18n controla tanto a **interface do ChatCLI** quanto o **meta-prompt que instrui a IA**. Mas o conteúdo que o LLM gera depende dele seguir a instrução (o que modelos 4.x fazem muito bem).
</Info>
