X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=utils%2Flanguage.js;fp=utils%2Flanguage.js;h=52c3842d99deee066ada1872b3746eb07b2e314d;hp=0000000000000000000000000000000000000000;hb=298c42e63ae321526693e9ce418c4113af36e025;hpb=067c675b75072c496f9665c4bf801cdc3d40398d diff --git a/utils/language.js b/utils/language.js new file mode 100644 index 00000000..52c3842d --- /dev/null +++ b/utils/language.js @@ -0,0 +1,27 @@ +// Select a language based on browser preferences, or cookie +module.exports = function(req, res) +{ + // If preferred language already set: + if (!!req.cookies["lang"]) + return req.cookies["lang"]; + + // Else: search and set it + const supportedLang = ["en","es","fr"]; + const langString = req.headers["accept-language"]; + let langArray = langString + .replace(/;q=[0-9.]+/g, "") //priority + .replace(/-[A-Z]+/g, "") //region (skipped for now...) + .split(",") //may have some duplicates, but removal is too costly + let bestLang = "en"; //default: English + for (let lang of langArray) + { + if (supportedLang.includes(lang)) + { + bestLang = lang; + break; + } + } + // Cookie expires in 183 days (expressed in milliseconds) + res.cookie('lang', bestLang, { maxAge: 183*24*3600*1000 }); + return bestLang; +}