페이지 404 다국어 - Gatsby.js
{votresite}.com/fr/page-qui-nexiste-pas
소개 :
En Gatsby.js il est très simple de mettre en place une page 404 pour l'intégralité du site. Pour cela, il nous suffit de créer une page 404.jsx/tsx (souvent déjà générée dans les templates) dans le dossier 페이지.
Mais dans ce cas, cette page sera la même pour toutes les langues. Nous nous souhaitons avoir une page spécifique par langue.
레 솔루션
Approche 1: Créer une 페이지 404 par langue et faire une 리디렉션
Une première approche (pas la meilleure), est de créer une page 404 par langue dans le dossier pages.
파 예:
Nous pouvons alors réaliser une redirection vers cette page, dans la page 404.jsx, en fonction de la langue de l'utilisateur, grâce à ce code:
import { useEffect } from "react"
import { navigate } from "gatsby"
const getRedirectLanguage = () => {
if (typeof navigator === `undefined`) {
return "fr"
}
let languages = navigator.languages ?? [navigator.language]
languages = languages.map((lang: string) => lang.toLowerCase())
if (!languages) return "fr"
let actualLanguage
languages.forEach(lang => {
if (lang.includes("fr")) {
actualLanguage = "fr"
}
if (lang.includes("en")) {
actualLanguage = "en"
}
if (lang.includes("de")) {
actualLanguage = "de"
}
})
return actualLanguage ?? "fr"
}
const NotFoundPage = () => {
useEffect(() => {
const urlLang = getRedirectLanguage()
navigate(`/${urlLang}/`, { replace: true })
}, [])
return null
}
export default NotFoundPage
Le problème est que l'utilisateur est redirigé, mais surtout il perd son url. Ce n'est pas un comportement souhaitable pour une 404페이지.
접근법 2: Gatsby.js*의 _matchPath*_ API 활용자
La bonne approche est d'utiliser le paramètre matchPath de Gatsby.js. En reprenant la création d'une page 404 par langue dans le dossier pages et grâce à l'API onCreatePage de Gatsby, nous pouvons, lors de leur creation, modifier le matchPath des pages 404.
기타 페이지 404, il nous suffit de changer son matchPath par
/${langCode}/*
.Ainsi, cette page sera affichée à chaque fois que le client cherche à accéder à une URL de la langue, sauf bien sûr pour les pages existantes.
음성 코드는 matchPath 수정을 위한 필수 코드입니다.
exports.onCreatePage = async ({ page, actions }) => {
const { createPage, deletePage } = actions
if (page.path.match(/^\/[a-z]{2}\/404\/$/)) {
const oldPage = { ...page }
const language = page.path.split(`/`)[1]
page.matchPath = `/${language}/*`
deletePage(oldPage)
createPage(page)
}
}
Ce 코드 수정자 donc le matchPath de toutes les pages 404 dans toutes les langues, par example:/fr/404,/de/404 등.
결론
Nous avons ainsi réussi à mettre en place une page 404 différente par langue grâce à l'API onCreatePage de Gatsby.js.
Cela nous permet maintenant de créer une page 404 spécifique par langue, tout en gardant l'URL erroné.
원천
Si vous le souhaitez, vous pouvez retrouver la documentation de Gatsby.js sur ce sujet ici :
https://www.gatsbyjs.com/docs/creating-prefixed-404-pages-for-different-languages/
Reference
이 문제에 관하여(페이지 404 다국어 - Gatsby.js), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kezios/page-404-multilingue-gatsbyjs-51g9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)