Traduzir a interface
A interface do painel existe em inglês e em português do Brasil (pt-BR, o idioma de origem). Adicionar outro idioma
exige só arquivos novos: nenhum componente muda.
Como funciona
Seção intitulada “Como funciona”- Os textos ficam em
apps/web/src/locales/<idioma>/<área>.ts, um objeto plano por área (common,projects,mail,backups…). - Um texto é lido pela chave
área.chave, por exemplot("projects.list.empty"). {nome}insere um valor. Plurais usam os sufixos_one/_other(e_zero,_few,_manyquando o idioma pede) e o valorcount.- Etiquetas como
<b>...</b>marcam negrito, código e links em alguns textos longos. Mantenha as mesmas etiquetas e as mesmas{variáveis}do texto de origem. - Chave ausente em um idioma cai para o
pt-BR. Se faltar lá também, nada aparece (texto vazio) e o console do navegador avisa em desenvolvimento. O teste de paridade impede que uma chave falte em um idioma, e o typecheck recusa uma chave escrita errada no código, então os dicionários do repositório não chegam a esse ponto. - Valores inseridos com
{nome}são sempre texto puro, mesmo dentro de<b>...</b>: nunca viram marcação. - Na primeira visita o idioma vem do navegador: o primeiro dos idiomas dele que o painel tem (
pt*virapt-BR; se nenhum combinar, inglês). Depois disso vale o seletor de idioma (sempre visível no cabeçalho do painel, ao lado do menu do usuário; na disposição lateral, no rodapé da lateral, acima do menu do usuário, com o nome completo do idioma), nas telas de login e do assistente e em Configurações → Aparência. No cabeçalho ele mostra o código curto da chave"language.short"docommon.ts(por exemploPT); um idioma sem essa chave mostra o nome da pasta em maiúsculas. A escolha fica guardada no navegador (localStorage, chavepaas.locale). - Datas, horas, números e ordenação seguem o idioma pelo
Intl. O fuso horário configurado nunca muda por causa do idioma.
Adicionar um idioma (por exemplo, espanhol)
Seção intitulada “Adicionar um idioma (por exemplo, espanhol)”-
Copie a pasta
apps/web/src/locales/en/paraapps/web/src/locales/es/(o nome da pasta é o código do idioma). -
Traduza os valores de todos os arquivos. Não renomeie chaves. Mantenha
{variáveis}e etiquetas como estão. Siga oapps/web/src/locales/GLOSSARY.mdpara que o mesmo conceito tenha sempre a mesma palavra. -
Em
common.ts, ajuste"language.name"para o idioma escrito nele mesmo (por exemplo"Español"): é o que o seletor mostra. -
Rode as verificações em
apps/web:Janela do terminal pnpm test -- tests/i18n-parity.test.ts # mesmas chaves, variáveis e etiquetas do pt-BRpnpm test:coverage # suíte inteirapnpm typecheck && pnpm build -
Abra o painel, escolha o idioma no seletor e percorra as páginas principais. Nenhuma chave crua como
projects.list.emptydeve aparecer, e nenhum rótulo ou botão pode ficar vazio. Lembre que as mensagens escritas pelo servidor continuam em português. -
Abra um pull request. Veja o CONTRIBUTING.md.
O idioma novo é reconhecido sozinho: o seletor, a detecção do navegador (es-MX vira es) e o fallback leem as pastas de locales/.
Mudar ou acrescentar um texto
Seção intitulada “Mudar ou acrescentar um texto”Edite os arquivos pt-BR e en juntos. Um teste falha se uma chave existir só em um deles, se as variáveis forem diferentes ou se um componente voltar a trazer texto fixo em português em vez de uma chave.