Cómo generar rutas dinámicas para localizaciones no predeterminadas en Next.js?
Estoy construyendo una aplicación Next.js con internacionalización utilizando next-i18next. Se generan páginas para todas las páginas de mi sitio tanto en inglés como en francés, excepto para las páginas con rutas dinámicas: (es decir, blog/[id]/[blog-title]
). Para las páginas con rutas dinámicas, se generan páginas para inglés, pero no para francés.
Debo mencionar que las entradas del blog son las mismas en ambos idiomas. Por lo tanto, si el usuario hace clic en una entrada de blog en la lista, obtendrán la misma entrada de blog.
Cuando un usuario de habla francesa va a una página con una ruta dinámica, obtienen un error 404. Soy nuevo en React y Next, así que podría estar haciendo algo incorrecto aquí.
// next-i18next.config.js
module.exports = {
i18n: {
locales: ['en', 'fr'],
defaultLocale: 'en',
localeDetection: true,
},
}
//
// blog/[id]/[title]
//
export async function getStaticPaths() {
const response = await axios.get('https://api.myappi.com/blog')
const posts = response.data
const paths = posts.map((post: Props) => ({
params: { id: post.Id, title: post.Title },
}))
return { paths, fallback: false }
}
export async function getStaticProps(props: IStaticProps) {
const { id, locale } = props.params
const response = await axios.get(`https://api.myappi.com/blog/${id}`)
const post = await response.data
if (!post) {
return {
notFound: true,
}
}
return {
props: {
Id: post.Id,
Title: post.Title,
Blog: post.Blog,
DatePosted: post.DatePosted,
PostedBy: post.PostedBy,
...(await serverSideTranslations(props.locale, ['common', 'blog']))
}
}
}
davy.ai
Parece que el problema está en la función
getStaticPaths
, la cual genera las rutas para las rutas dinámicas. Actualmente, solo está generando rutas para la configuración regional predeterminada (inglés) y no para la configuración regional francesa. Para solucionar esto, debes modificar la función para generar rutas para ambas configuraciones regionales de la siguiente manera:Con esta modificación, se generarán rutas para ambas configuraciones regionales, y los usuarios de idioma francés ya no obtendrán un error 404 al visitar una página con una ruta dinámica.