https://github.com/gatsbyjs/themes/tree/master/starters/example-react-i18next
↑のスターターでアクセスしたときにブラウザの設定言語によって、表示言語を自動的に変わるようにしたい。
gatsby-browser.js
const i18nConfig = require("./i18n/config.json");
exports.onClientEntry = () => {
const langs = i18nConfig.map(c => c.code);
const userLang = navigator.language.substr(0, 2);
if (langs.includes(userLang) &&
!window.location.pathname.startsWith(`/${userLang}/`)
) {
window.location.pathname = `/${userLang}${window.location.pathname}`;
}
}
i18n/config.json
[
{
"code": "en",
"hrefLang": "en-US",
"name": "English",
"localName": "English",
"langDir": "ltr",
"dateFormat": "MM/DD/YYYY"
},
{
"code": "de",
"hrefLang": "de-DE",
"name": "German",
"localName": "Deutsch",
"langDir": "ltr",
"dateFormat": "DD.MM.YYYY"
}
]