Nota
Documento por idioma, não campo localizado
Num site bilíngue, a decisão invisível é onde a tradução mora no CMS. Campo localizado esconde o que falta traduzir; documento por idioma transforma a ausência em fato verificável.
Todo site bilíngue carrega duas decisões que parecem detalhe até o conteúdo existir. A visível: o que fazer com o idioma do navegador. A invisível: como a tradução mora no CMS — campos duplicados dentro de cada documento, ou um documento por idioma, ligado ao outro por referência.
A maioria dos exemplos escolhe campos localizados, com bons motivos: menos documentos, um botão de publicar só, nenhuma referência para manter. O problema aparece depois, no editor: campo vazio e campo ainda não traduzido são o mesmo pixel. Ninguém consegue olhar a lista de conteúdo e dizer o que falta.
A ausência como fato
Com um documento por idioma, a ligação entre as duas versões é uma referência explícita — o par de tradução. A falta do par deixa de ser suspeita e vira um fato que uma consulta devolve: esta nota não tem versão em inglês. O editor mostra; o código consegue cobrar.
É o que transforma "nenhuma seção existe em um idioma só" de intenção em regra: um portão que retém a publicação enquanto o par não existe ou está vazio. Regra que não dá para verificar é intenção.
O custo, dito em voz alta
Dois documentos custam disciplina: cada idioma tem slug próprio, publicação própria e uma referência a manter. E a troca de idioma precisa resolver o slug do outro lado seguindo o par, em vez de repetir o caminho. É custo real — e é exatamente ele que faz a cobertura ser verificável em vez de prometida.
Arquitetura raramente é sobre o caso feliz. É sobre qual estado ruim você prefere: um vazio que ninguém vê, ou uma ausência que trava a publicação até alguém olhar.
Este site escolheu a segunda. Esta nota — que você pode ler em dois idiomas — é o primeiro documento a viver sob essa regra.