Content Collections para sites trilíngues no Astro
Como estruturar Content Collections no Astro para publicar posts em português, inglês e espanhol sem perder controle editorial.
Content Collections são uma das melhores partes do Astro para quem quer tratar conteúdo como dado estruturado. Em um site trilíngue, elas ajudam a manter disciplina: cada post precisa carregar título, descrição, idioma, categoria, URL canônica, tempo de leitura e metadados consistentes.
Sem esse contrato, o blog cresce rápido, mas vira uma pasta de arquivos difíceis de auditar e confiar.
A estrutura de pastas
Uma estrutura simples já resolve muito:
src/content/blog/ptsrc/content/blog/ensrc/content/blog/es
Cada idioma fica isolado, mas todos compartilham a mesma collection. Isso permite filtrar por prefixo, ordenar por data e reaproveitar os mesmos componentes de card, artigo e posts relacionados.
O segredo é não misturar a decisão editorial com a rota pública. A pasta indica o idioma. O slug indica a URL. O canonicalId conecta as traduções.
O schema como contrato
O schema da collection é a barreira de qualidade. Ele força campos obrigatórios e impede que um post incompleto quebre o site depois.
Campos importantes para um blog trilíngue:
languagecanonicalcanonicalIddisplayDatebackLabeltocLabelsourcesHeadingtocsources
Quando esses campos são validados, o layout pode confiar nos dados. Isso reduz condicionais espalhadas pelos componentes e torna a automação mais previsível.
Rotas separadas por idioma
As páginas podem ser simples:
/blog/[slug]para português./en/blog/[slug]para inglês./es/blog/[slug]para espanhol.
Cada rota filtra apenas os posts do próprio idioma e usa a mesma função para gerar URL, posts relacionados e alternates.
Esse desenho evita um roteador internacional complexo antes da hora. Para um site estático pessoal ou editorial, clareza vale mais que sofisticação prematura.
Como isso escala
Quando o volume aumenta, a estrutura continua funcionando. Novos posts entram como arquivos. Novos idiomas podem ganhar novas pastas. Automações podem gerar frontmatter respeitando o schema.
O ponto mais importante é que o conteúdo deixa de ser improviso. Ele vira uma base legível, versionada e pronta para ser alimentada por uma esteira com n8n, Baserow ou qualquer outro backend editorial.