mirror of
https://github.com/Unkn0wnCat/KevinK.dev.js.git
synced 2025-05-30 17:26:36 +02:00
Add automatic language redirector
This commit is contained in:
parent
186ebe2caa
commit
29456aa1b6
4 changed files with 44 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
// For more information, see https://fab.dev/kb/configuration
|
||||
{
|
||||
plugins: {
|
||||
'./src/server/languageRedirect.js': {},
|
||||
'@fab/input-static': {
|
||||
dir: 'public'
|
||||
},
|
||||
|
|
5
package-lock.json
generated
5
package-lock.json
generated
|
@ -13447,6 +13447,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/locale/-/locale-0.1.0.tgz",
|
||||
"integrity": "sha1-O1v3BhT9q0isPj+8ZIFHy2VEO94="
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
"gatsby-transformer-json": "^2.8.0",
|
||||
"i18next": "^19.8.4",
|
||||
"jquery": "^3.5.1",
|
||||
"locale": "^0.1.0",
|
||||
"node-sass": "^4.14.1",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1",
|
||||
|
|
37
src/server/languageRedirect.js
Normal file
37
src/server/languageRedirect.js
Normal file
|
@ -0,0 +1,37 @@
|
|||
const config = require("../../config"), locale = require("locale");
|
||||
|
||||
let supported = new locale.Locales(conifg.languages);
|
||||
let defaultLang = "en";
|
||||
|
||||
export default ({ Router }) => {
|
||||
Router.on("*", checkLang);
|
||||
};
|
||||
|
||||
async function checkLang({ request }) {
|
||||
const { url } = request
|
||||
|
||||
let requestURL = new URL(url);
|
||||
|
||||
config.languages.forEach((language) => {
|
||||
if(requestURL.pathname.startsWith("/"+language+"/")) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
let headers = request.headers;
|
||||
|
||||
let selectedLanguage = defaultLang;
|
||||
|
||||
if(headers.has("Accept-Language")) {
|
||||
let languageHeader = headers.get("Accept-Language");
|
||||
|
||||
let requestLocales = new locale.Locales(languageHeader);
|
||||
|
||||
selectedLanguage = requestLocales.best(supported);
|
||||
}
|
||||
|
||||
requestURL.pathname = "/"+selectedLanguage+requestURL.pathname;
|
||||
|
||||
return Response.redirect(requestURL.toString(), 302);
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue