mirror of
https://github.com/Unkn0wnCat/KevinK.dev.js.git
synced 2025-05-29 00:36: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
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