#Generate sitemap

9 messages · Page 1 of 1 (latest)

quartz remnant
#

Estoy intentando generar el sitemap para mi proyecto con astro que usa i18n, pero no me genera dicho sitemap con los idiomas que uso.
Este es mi configuración astro:

export default defineConfig({
  site: "https://joelocano.stellarway.net",
  base: "/",
  trailingSlash: "never",
  output: "server",
  integrations: [
    mdx(),
    sitemap({
      i18n: {
        defaultLocale: 'es',
        locales: {
          en: 'en-US',
          es: 'es-ES',
        },
      },
    }),
    react(),
    tailwind(),
    icon({
      iconDir: "src/assets/icons",
    }),
  ],
  adapter: vercel(),
  i18n: {
    defaultLocale: "es",
    locales: ["es", "en"],
    routing: {
      prefixDefaultLocale: true,
      redirectToDefaultLocale: false,
    },
  },
  vite: {
    plugins: [svgr()],
    resolve: {
      // Use react-dom/server.edge instead of react-dom/server.browser for React 19.
      // Without this, MessageChannel from node:worker_threads needs to be polyfilled.
      // @ts-ignore
      alias: import.meta.env.PROD && {
        "react-dom/server": "react-dom/server.edge",
      },
    },
  },
});

Y esta es mi estructura de carpetas

peak spireBOT
#

Hi @quartz remnant. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:

#

Entiendo que estás teniendo problemas para generar el sitemap con los idiomas que usas en tu proyecto Astro con i18n. Basándome en la configuración que has proporcionado, puedo ver que estás utilizando la integración de sitemap de Astro junto con la configuración de i18n. Vamos a analizar el problema y proponer algunas soluciones.

En primer lugar, es importante notar que tu configuración de i18n en la integración de sitemap no coincide exactamente con la configuración global de i18n en tu proyecto. Esto podría ser una de las razones por las que el sitemap no se está generando correctamente con los idiomas que usas.

Aquí hay algunas sugerencias para resolver este problema:

  1. Alinea la configuración de i18n en la integración de sitemap con la configuración global:
sitemap({
  i18n: {
    defaultLocale: 'es',
    locales: {
      en: 'en-US',
      es: 'es-ES',
    },
  },
}),
  1. Asegúrate de que tu estructura de carpetas siga el patrón correcto para i18n. Dado que has configurado prefixDefaultLocale: true, deberías tener una estructura similar a esta:
src/
  pages/
    es/
      index.astro
      about.astro
    en/
      index.astro
      about.astro
  1. Verifica que estás utilizando la versión más reciente de @astrojs/sitemap. Algunas versiones anteriores tenían problemas con la generación de sitemaps para proyectos i18n.

  2. Ten en cuenta que, según la documentación de Astro sobre sitemap, el sitemap se genera durante el proceso de construcción. Sin embargo, tu configuración tiene output: "server", lo que significa que estás utilizando el modo SSR. La integración de sitemap no puede generar entradas de sitemap para rutas dinámicas en modo SSR.

#
  1. Si es posible, considera cambiar a output: "static" para generar el sitemap correctamente. Si necesitas mantener el modo SSR, podrías considerar generar el sitemap manualmente o utilizar una solución alternativa.

  2. Asegúrate de que tu site esté correctamente configurado, ya que es necesario para la generación del sitemap.

Si después de aplicar estas sugerencias sigues teniendo problemas, podrías considerar generar el sitemap manualmente o utilizar una solución alternativa que sea compatible con el modo SSR.

Documentación de Astro sobre sitemap proporciona más información sobre la configuración y uso de la integración de sitemap.

Si necesitas más ayuda o tienes preguntas adicionales, no dudes en preguntar.

Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:

#

@chilly bane Kapa.ai is still learning and improving, please let me know how I did by reacting below.

quartz remnant
#

@peak spire Existe forma de configurarlo para que acepte mi estructura de carpetas?, es muy verboso tener que repetir las rutas

peak spireBOT
#

Let me check the knowledge base for you again. One moment! :books:

#

Entiendo tu preocupación sobre la verbosidad de repetir las rutas en la estructura de carpetas para i18n. Lamentablemente, la configuración estándar de Astro para i18n requiere esta estructura de carpetas por defecto. Sin embargo, hay algunas alternativas que podrías considerar para hacer el manejo de rutas más manejable:

  1. Enrutamiento manual:
    Astro ofrece una opción de enrutamiento manual que te permite implementar tu propia lógica de enrutamiento. Esto te daría más flexibilidad en la estructura de tus carpetas. Puedes configurarlo de la siguiente manera:

    i18n: {
      defaultLocale: "es",
      locales: ["es", "en"],
      routing: {
        prefixDefaultLocale: true,
        redirectToDefaultLocale: false,
        manual: true
      },
    },
    

    Al establecer routing.manual: true, Astro desactivará su middleware i18n predeterminado, permitiéndote implementar tu propia lógica de enrutamiento. Esto te da la libertad de estructurar tus carpetas como prefieras, pero requiere que implementes tu propia lógica de enrutamiento.

    Documentación de Astro sobre i18n proporciona más información sobre esta opción.

  2. Usar colecciones de contenido:
    Otra alternativa es utilizar colecciones de contenido de Astro para manejar el contenido traducido. Esto te permite mantener una estructura de carpetas más plana y manejar las traducciones a nivel de contenido en lugar de a nivel de ruta.

    Documentación de Astro sobre colecciones de contenido ofrece más detalles sobre cómo implementar esta solución.

#
  1. Implementar un sistema de traducción personalizado:
    Podrías crear tu propio sistema de traducción utilizando archivos JSON o YAML para almacenar las traducciones y luego cargarlas dinámicamente en tus componentes. Esto te permitiría mantener una estructura de carpetas más simple.

Es importante tener en cuenta que estas soluciones alternativas pueden requerir más trabajo de configuración inicial y podrían no integrarse tan fácilmente con algunas características automáticas de i18n de Astro.

Si decides mantener la estructura de carpetas estándar de Astro para i18n, podrías considerar el uso de scripts o herramientas de generación de archivos para ayudar a crear y mantener la estructura de carpetas de manera más eficiente.

Recuerda que cualquier cambio en la estructura de enrutamiento podría afectar la generación del sitemap, así que asegúrate de probar y ajustar la configuración del sitemap en consecuencia.

Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: