X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Futils%2Flanguage.js;fp=client%2Fsrc%2Futils%2Flanguage.js;h=cff89aed4b0d0aa7bddb56a093bd19e1e69b33ee;hb=625022fdcf750f0aff8fcd699f7e9b89730e1d10;hp=0000000000000000000000000000000000000000;hpb=b955c65b942d09d24b5c3bed0d755d4f2f8f71f1;p=vchess.git diff --git a/client/src/utils/language.js b/client/src/utils/language.js new file mode 100644 index 00000000..cff89aed --- /dev/null +++ b/client/src/utils/language.js @@ -0,0 +1,31 @@ +// TODO: adapt for client side https://stackoverflow.com/a/4079798 +// ==> Each translation file should be loaded dynamically +// (each rules definition too, + modal welcome) + +// 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; +}