Newer
Older
const port = 9001;
const distPath = "www";
const fs = require("fs");
const path = require("path");
const { join } = require("path");
const express = require("express");
//By defaut the language should be english.
const default_lang = "en";
/**
* Get the languages of the user's navigator and covert it in a array of exploitable datas.
function parseLanguageData(stringData) {
var arrayData = stringData
.split(",")
.map(element => element.split(/[-;]/).shift());
arrayData.push(default_lang);
return arrayData;
function getAvailableLanguage() {
const langs = fs
.readdirSync(distPath)
.filter(f => path.basename(f, ".yml").match(/^index-[a-z]{2}\.html/))
.map(f => f.match(/^index-([a-z]{2})\.html/)[1]);
return langs;
/**
* Compare the languages possibles with the languages avalaible and return the matched language.
* @param {array} availableLanguages
* @param {array} userLanguages
function matchLanguage(availableLanguages, userLanguages) {
for (let index = 0; index < userLanguages.length; index++) {
const userLanguage = userLanguages[index];
for (let index = 0; index < availableLanguages.length; index++) {
const availableLanguage = availableLanguages[index];
if (userLanguage === availableLanguage) {
}
}
}
}
.use(express.static(distPath))
// .use('/src', express.static(join(__dirname, 'src')))
.get(/^[^.]*$/, (req, rep) => {
// If we have no language's cookie, we take the language of the navigator's user and set a cookie, else we take the language of the cookie.
if (!req.cookies.langData.langIndice) {
var langRequired = matchLanguage(
getAvailableLanguage(),
parseLanguageData(req.headers["accept-language"])
);
langAsked = {
langIndice: langRequired
};
rep.cookie("langData", langAsked);
} else {
rep.sendFile(join(__dirname, distPath, `/index-${langAsked}.html`));
.listen(port);
// browser sync