Como traducir os slugs nas miñas páxinas web
xov., 12 de xan. de 2023
Quería facer un blogue e preguntábame como internacionalizar o meu sitio incluíndo os seus urls. O desafío é facer que as páxinas que se crean no momento da compilación asígnense a cada un dos seus slugs traducidos.
Esta é a miña solución:
1. Cre un arquivo mdx para cada idioma, por exemplo:
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 arquivo mdx, as cousas importantes son:
3. Con getStaticPaths creamos as páxinas para cada idioma:
No meu caso creo páxinas diferentes para cada etiqueta e categoría, pero ti podes crear as páxinas que queiras.
4. Con getStaticProps obtemos os datos do arquivo mdx:
Cando se executa getStaticPaths, pasa o locale a getStaticProps, neste momento temos a categoría, o slug e o locale, polo que podemos obter os datos do arquivo mdx.
4.1. Obteña os datos do arquivo mdx coa axuda de gray-matter e fs:
Necesitamos crear funcións que nos axuden a obter os datos do arquivo mdx.
4.2. Serialice o arquivo mdx coa axuda 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. Obteña os datos finalmente no seu compoñente para a capa de presentación.
Pode ver o resultado mirando a URL desta publicación e cambiando o idioma na configuración e mirando a mesma publicación novamente.