Index page almost OK. Now work on variant page (main hall...)
[vchess.git] / utils / language.js
diff --git a/utils/language.js b/utils/language.js
new file mode 100644 (file)
index 0000000..52c3842
--- /dev/null
@@ -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;
+}