Localização

O Brabo fala quatro idiomas na documentação e na interface, e o português do Brasil é a fonte e o padrão dos dois produtos (ADR 0216). Todo texto novo nasce em pt-BR; os outros idiomas são traduções dele.

A regra vale para todos os repositórios (ADR 0266, que substitui o 0260): a doc dos irmãos também nasce em pt-BR e pode ter traduções em <raiz>/docs/i18n/. A página de irmão que ainda está em inglês leva idioma_original: en no frontmatter e segue aceita até ser retraduzida.

Idiomas e códigos

idioma código formas de plural (Intl.PluralRules) nota
Português (Brasil) pt-BR one, many, other (+ _zero obrigatório na interface) fonte
English en one, other Notas do inglês
Русский ru one, few, many, other Notas do russo
简体中文 zh-Hans other Notas do chinês

Os códigos são os mesmos no gerador do site, no i18next, no <html lang> e em users.locale. A busca local do site usa os dela (pt, en, ru, zh).

No site, o seletor de idioma fica na barra de cima (scripts/docs/site/layout.mjs), com os rótulos acima, e leva à mesma página no idioma escolhido; cada idioma mora no próprio caminho (/en/, /ru/, /zh-Hans/; o pt-BR na raiz do degrau).

Resolução do idioma na interface

A escolha gravada na conta vence sempre e nunca é sobrescrita por detecção. Sem escolha, o idioma do navegador sugere (resolverIdiomaDoNavegador, apps/web/src/lib/idioma.ts):

  • pt* → pt-BR;
  • zh, zh-CN, zh-SG e zh-Hans* → zh-Hans;
  • ru* → ru;
  • en* → en;
  • qualquer outro — alemão, chinês tradicional (zh-TW, zh-Hant) — → pt-BR.

O idioma das RESPOSTAS dos agentes é outra preferência, com mecanismo próprio (ADR 0177), e não depende do idioma da interface.

O texto que falta

  • No site, a página sem tradução num locale é servida da fonte pt-BR, no mesmo endereço, e uma faixa no topo DIZ isso no idioma de quem lê. A página traduzida cuja fonte mudou depois da tradução diz a data da tradução e que o original mudou.
  • No site, a página de irmão com idioma_original: en é a própria fonte no /en/, sem faixa; em pt-BR, ru e zh-Hans o site serve a MESMA fonte inglesa com a faixa "esta página só existe em inglês". Se o irmão ainda tem a tradução do locale, ela vale nele (estado misto, página a página).
  • Na interface, o texto não falta: a paridade de chaves e de plurais é medida no brabo-web (não neste relatório, ADR 0273), e o fallbackLng é o pt-BR.

Toda página traduzida leva no frontmatter traducao_de: <SHA> — o último commit da fonte que ela traduz. É ele que separa "em dia" de "defasada". A medição de hoje, só da doc do brabo (ADR 0273), está em Paridade de tradução, gerada por pnpm docs:generate.

Os rótulos da lateral de Referência e da barra de cima vêm de scripts/docs/site/navegacao.mjs e do current.json de cada idioma em docs/i18n/<locale>/; desde o ADR 0219 o conteúdo das páginas de reference/ também é traduzido, inclusive o bloco gerado, e só a página de paridade fica fora.

O que nunca se traduz

  • Brabo, e os nomes de agente e de papel do glossário (Criativo, PO, Arquiteto, Dev Lead, Infra Lead, owner, maintainer…);
  • dados do usuário (nomes de projeto, mensagens, artefatos);
  • comandos, caminhos, nomes de variável, de branch e de evento;
  • números de RN e de ADR e as âncoras {#rn-NNN}.