La globalización del desarrollo web ha hecho que el soporte multilingüe sea una característica esencial para cualquier sitio web moderno. En WillDevp, decidimos dar este paso importante para hacer nuestro contenido más accesible a una audiencia global.
Nuestro sitio web, construido con Astro, necesitaba manejar:
Implementamos una estructura organizada para manejar el contenido multilingüe:
src/
├── content/
│ └── blog/
│ ├── es/
│ │ └── articulos-es.md
│ └── en/
│ └── articles-en.md
└── pages/
├── [lang]/
│ └── blog/
│ └── posts/
│ └── [...slug].astro
└── blog/
└── posts/
└── [...slug].astro
Utilizamos el sistema de rutas dinámicas de Astro para crear URLs limpias y SEO-friendly:
export const getStaticPaths = (async () => {
const posts = await getCollection("blog");
return posts.map((post) => {
const slug = post.slug.split('/').pop();
return {
params: {
lang: post.data.lang,
slug: slug
},
props: { post }
};
});
});
Desarrollamos componentes que manejan automáticamente el idioma:
---
const { lang = 'es' } = Astro.props;
const translations = {
es: {
readMore: 'Leer más',
published: 'Publicado el'
},
en: {
readMore: 'Read more',
published: 'Published on'
}
};
---
Implementamos un sistema de detección de idioma basado en:
Uno de los mayores desafíos fue manejar correctamente los slugs para los posts del blog. La solución fue implementar un sistema que:
Aseguramos que cada página tuviera:
La implementación del soporte multilingüe resultó en:
Planeamos: