Engadir o galego á nosa propia web: o que aprendemos facendo i18n sen librarías

Hai unhas semanas decidimos meter o galego na nosa propia web, ademais do español e do inglés. Non foi por petición de ningún cliente nin por un plan de expansión: foi Marta, que leva a parte comercial, quen un día me comentou que boa parte de quen nos escribe por LinkedIn é de Galicia, e que a algún lle parecera raro ver a web só en castelán e en inglés, nunca no seu idioma. Non foi unha queixa formal, foi un comentario de corredor. Pero quedou aí a dar voltas.
Decidimos non usar ningunha libraría de i18n: en vez diso, engadimos un subcartafol por idioma dentro de cada colección de contido (blog/es/, blog/en/, blog/gl/, e o mesmo en faq/), co mesmo nome de ficheiro nos tres para emparellar traducións da mesma peza. Astro trae desde hai un par de versións soporte de rutas con prefixo de idioma integrado, pero nós xa usabamos a Content Layer API con loader: glob para o blog e a FAQ, así que esa foi a solución máis sinxela. Nada de táboa de traducións en base de datos nin de plugin de terceiros, a mesma lóxica coa que xa eliximos o stack desta web: cantas menos pezas metamos, menos cousas se poden romper.
Traducir non foi o que máis tempo nos levou. Fágoo eu directamente, sen pasar o texto por ningunha ferramenta de tradución automática — o galego fáloo desde neno e nótase decontado cando unha tradución vén de máquina, e non quero que a un lector galego lle chirríe a lectura. O que si custou foi separar o prefixo de idioma do slug real á hora de xerar rutas: getStaticPaths traballa con entry.id, e no blog ese id leva pegados idioma, data e slug. Acabamos escribindo unha función á parte só para partir esa cadea nas súas tres pezas.
E logo chegou a metedura de pata, parva pero que custou atopar. Subimos un artigo sobre backups sen o prefixo es/ diante do nome do ficheiro. Astro cargábao sen protestar, porque o schema da colección non esixe ese cartafol, así que o build pasaba limpo. Pero o artigo non aparecía nin en /blog, nin en /en/blog, nin en /gl/blog. Ningún erro, ningunha advertencia na consola, só un artigo pantasma que existía no repositorio e en ningún sitio do navegador. Deime conta porque busquei o título no propio buscador do sitio e non saíu nada.
Desde entón ese cartafol de idioma é do primeiro que reviso antes de facer commit de contido novo. O que aínda non teño resolto é que facer coas pezas antigas: vounas traducindo ao galego segundo atopo un oco, non de vez, así que durante un tempo o selector de idioma en galego vai amosar bastantes menos artigos que en español ou inglés. Non sei se iso confunde máis do que axuda, ou se total é mellor así, pouco a pouco, que forzar unha tradución rápida de corenta pezas só por quedar ben co completismo.