Cómo traducir los slugs en mis páginas web
jue, 12 ene 2023
Quería hacer un blog y me preguntaba cómo internacionalizar mi sitio incluyendo sus urls. El desafío es hacer que las páginas que se crean en el momento de la compilación se asignen a cada uno de sus slugs traducidos.
Esta es mi solución:
1. Crea un archivo mdx para cada idioma, por ejemplo:
data/blog/translate-the-slugs/translate-the-slugs.en.mdx
data/blog/translate-the-slugs/translate-the-slugs.es.mdx
data/blog/translate-the-slugs/translate-the-slugs.gl.mdx
2. Dentro de cada archivo mdx, las cosas importantes son:
3. Con getStaticPaths creamos las páginas para cada idioma:
En mi caso creo páginas diferentes para cada etiqueta y categoría, pero tú puedes crear las páginas que quieras.
4. Con getStaticProps obtenemos los datos del archivo mdx:
Cuando se ejecuta getStaticPaths, pasa el locale a getStaticProps, en este momento tenemos la categoría, el slug y el locale, por lo que podemos obtener los datos del archivo mdx.
4.1. Obtenga los datos del archivo mdx con la ayuda de gray-matter y fs:
Necesitamos crear funciones que nos ayuden a obtener los datos del archivo mdx.
4.2. Serialice el archivo mdx con la ayuda de @next-mdx-remote/serialize:
import { serialize as sz } from 'next-mdx-remote/serialize';/** * @description Serialize MDX file with Code Hike. * * @example * serialize('# Hello World'); * returns { content: '...', meta: {...} } * * @param {string} mdx - MDX file. * @returns {Object} - Object with MDX content and meta data. */export const serialize = (mdx: string) => sz(mdx, { mdxOptions: { remarkPlugins: [[remarkCodeHike, { autoImport: false, theme }]], useDynamicImport: true, }, });
4.3. Obtenga los datos finalmente en su componente para la capa de presentación.
Puede ver el resultado mirando la URL de esta publicación y cambiando el idioma en la configuración y mirando la misma publicación nuevamente.