From 9aed1417ee2b6d0e9622e3d5da66725c74ad990d Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 11:16:24 +0100
Subject: [PATCH 01/13] WIP : We get translated variable.

---
 compile-pug.js     | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 translation/en.yml |  5 ++++
 translation/fr.yml |  4 +++
 3 files changed, 72 insertions(+)
 create mode 100644 compile-pug.js
 create mode 100644 translation/en.yml
 create mode 100644 translation/fr.yml

diff --git a/compile-pug.js b/compile-pug.js
new file mode 100644
index 00000000..0636f12d
--- /dev/null
+++ b/compile-pug.js
@@ -0,0 +1,63 @@
+const path = require('path')
+const fs = require('fs').promises
+const objectAssignDeep = require(`object-assign-deep`)
+const yaml = require('js-yaml')
+const pug = require('pug')
+const chokidar = require('chokidar')
+
+const default_lang = 'en'
+
+const pugFile = './src/index.pug'
+const dataDir = './translation'
+const outDir = './www'
+
+async function compile() {
+  const langs = (await fs.readdir(dataDir))
+    .filter(f => path.extname(f) === '.yml')
+    .map(f => path.basename(f, '.yml'))
+
+  const langData = {}
+
+  await Promise.all(
+    langs.map(lang =>
+      fs
+        .readFile(`${dataDir}/${lang}.yml`, 'utf8')
+        .then(text => (langData[lang] = yaml.safeLoad(text))),
+    ),
+  )
+
+  for (const lang in langData) {
+    if (lang === default_lang) continue
+    langData[lang] = objectAssignDeep(
+      {},
+      langData[default_lang],
+      langData[lang],
+    )
+  }
+
+  const options = JSON.parse(await fs.readFile('./src/config.json', 'utf-8'))
+  const pugFct = pug.compileFile(pugFile)
+
+  await fs.mkdir(outDir, { recursive: true })
+
+  await Promise.all(
+    Object.entries(langData).map(([lang, data]) => {
+      options.lang=lang
+      options.data=data
+
+      const html = pugFct(options)
+      const filename = `${outDir}/index-${lang}.html`
+      console.log(`write ${filename}`)
+      return fs.writeFile(filename, html)
+    }),
+  )
+}
+
+compile().then(() => {
+  if (!process.argv.includes('-w') && !process.argv.includes('--watch')) return
+  console.log('watching for changes…')
+  chokidar.watch([pugFile, dataDir]).on('change', editedFilePath => {
+    console.log(`\nchanged: ${editedFilePath}`)
+    compile()
+  })
+})
diff --git a/translation/en.yml b/translation/en.yml
new file mode 100644
index 00000000..9e8e911a
--- /dev/null
+++ b/translation/en.yml
@@ -0,0 +1,5 @@
+---
+title: My amazing website
+welcome: Hi! welcome to our website
+contact: click here to contact us
+email: contact@example.com
\ No newline at end of file
diff --git a/translation/fr.yml b/translation/fr.yml
new file mode 100644
index 00000000..eb31599a
--- /dev/null
+++ b/translation/fr.yml
@@ -0,0 +1,4 @@
+---
+title: Mon superbe site
+welcome: Bonjour ! bienvenu sur notre site
+contact: cliquez ici pour nous contacter
\ No newline at end of file
-- 
GitLab


From 8f5143f70872bc29bdd2415cf3e216cafd84957b Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 11:16:38 +0100
Subject: [PATCH 02/13] WIP : We get translated variable.

---
 package.json                              | 9 ++++++---
 server.js                                 | 2 +-
 src/includes/mentor/components/header.pug | 3 ++-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index c51b7fa7..3a74c2eb 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
     "scss": "node-sass -w ./src/styles/index.scss -o ./www/styles/",
-    "pug": "pug --watch ./src/index.pug --out ./www/ --obj ./src/config.json",
+    "pug": "node ./compile-pug.js -w",
     "pugprod": "pug ./src/index.pug --out ./www/ --obj prod.json",
     "copy-js": "cp ./src/scripts/*.js  ./www/scripts/",
     "copy-fonts": "cp -R ./src/fonts  ./www",
@@ -21,9 +21,12 @@
     "@babel/core": "^7.1.0",
     "@babel/cli": "^7.1.0",
     "node-sass": "^4.9.3",
-    "pug-cli": "^1.0.0-alpha6",
     "browser-sync": "^2.24.7",
-    "express": "^4.16.3"
+    "express": "^4.16.3",
+    "chokidar": "^3.2.3",
+    "js-yaml": "^3.13.1",
+    "object-assign-deep": "^0.4.0",
+    "pug": "^2.0.4"
   },
   "dependencies": {
     "@webcomponents/html-imports": "^1.2.0",
diff --git a/server.js b/server.js
index 21a3c704..f16bdbd9 100644
--- a/server.js
+++ b/server.js
@@ -10,7 +10,7 @@ app
   .use(express.static(distPath))
   // .use('/src', express.static(join(__dirname, 'src')))
   .get(/^[^.]*$/, (req, rep) =>
-    rep.sendFile(join(__dirname, distPath, '/index.html'))
+    rep.sendFile(join(__dirname, distPath, '/index-fr.html'))
   )
   .listen(port);
 
diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index 3e7b4a46..44de2130 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -16,7 +16,8 @@
                 label-languages=''
                 naked
             )
-            
+            h1= data.title
+            h2 hello
             .dropdownWrapper
                 sib-display#mentor-account-picture.dropdownLabel(
                     bind-user
-- 
GitLab


From ed1d183db3c8dd5cb464accf10a6d0fe82a9027d Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 13:32:45 +0100
Subject: [PATCH 03/13] We can set the language given by the navigator's user.

---
 server.js | 41 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 38 insertions(+), 3 deletions(-)

diff --git a/server.js b/server.js
index f16bdbd9..09078206 100644
--- a/server.js
+++ b/server.js
@@ -1,16 +1,51 @@
-const port = 9000;
+const port = 9001;
 const browserSyncPort = 3000;
 const distPath = 'www';
+const fs = require('fs')
+const path = require('path')
 
 // express server
 const { join } = require('path');
 const express = require('express');
 const app = express();
+
+const default_lang = 'en'
+
+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
+}
+
+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) {
+        return userLanguage
+      }
+    }
+  }
+}
+
 app
   .use(express.static(distPath))
   // .use('/src', express.static(join(__dirname, 'src')))
-  .get(/^[^.]*$/, (req, rep) =>
-    rep.sendFile(join(__dirname, distPath, '/index-fr.html'))
+  .get(/^[^.]*$/, (req, rep) => {
+    var langRequired = matchLanguage(getAvailableLanguage(), parseLanguageData(req.headers["accept-language"]))
+    console.log('langRequired : ',  langRequired)
+    rep.sendFile(join(__dirname, distPath, `/index-${langRequired}.html`))
+  }
   )
   .listen(port);
 
-- 
GitLab


From ea7da8e284a2520fb74561aa8f329ffcc1a8d2f9 Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 13:48:19 +0100
Subject: [PATCH 04/13] Add comments

---
 server.js | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/server.js b/server.js
index 09078206..41004b17 100644
--- a/server.js
+++ b/server.js
@@ -11,6 +11,10 @@ const app = express();
 
 const default_lang = 'en'
 
+/**
+ * Get the languages of the user's navigator and covert it in a array of exploitable datas.
+ * @param {string} stringData 
+ */
 function parseLanguageData(stringData) {
   var arrayData = stringData.split(',').map(element => 
     element.split(/[-;]/).shift()
@@ -19,6 +23,9 @@ function parseLanguageData(stringData) {
   return arrayData
 }
 
+/**
+ * Get the language we can display.
+ */
 function getAvailableLanguage() {
   const langs = fs.readdirSync(distPath)
   .filter(f => path.basename(f, '.yml').match(/^index-[a-z]{2}\.html/))
@@ -26,6 +33,11 @@ function getAvailableLanguage() {
   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];
@@ -43,7 +55,6 @@ app
   // .use('/src', express.static(join(__dirname, 'src')))
   .get(/^[^.]*$/, (req, rep) => {
     var langRequired = matchLanguage(getAvailableLanguage(), parseLanguageData(req.headers["accept-language"]))
-    console.log('langRequired : ',  langRequired)
     rep.sendFile(join(__dirname, distPath, `/index-${langRequired}.html`))
   }
   )
-- 
GitLab


From dddc057ee2d6deb97aad5fd3dc9cbe3ffb40e2f3 Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 14:26:34 +0100
Subject: [PATCH 05/13] Add lang cookie.

---
 package.json |  1 +
 server.js    | 75 ++++++++++++++++++++++++++++++++++------------------
 2 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/package.json b/package.json
index 3a74c2eb..c0eded18 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
   "dependencies": {
     "@webcomponents/html-imports": "^1.2.0",
     "@webcomponents/webcomponentsjs": "^1.2.7",
+    "cookie-parser": "^1.4.4",
     "include-media": "^1.4.9",
     "normalize.css": "^8.0.0",
     "onchange": "^6.1.0",
diff --git a/server.js b/server.js
index 41004b17..adf022f4 100644
--- a/server.js
+++ b/server.js
@@ -1,42 +1,45 @@
 const port = 9001;
 const browserSyncPort = 3000;
-const distPath = 'www';
-const fs = require('fs')
-const path = require('path')
+const distPath = "www";
+const fs = require("fs");
+const path = require("path");
 
 // express server
-const { join } = require('path');
-const express = require('express');
+const { join } = require("path");
+const express = require("express");
 const app = express();
+let cookieParser = require("cookie-parser");
 
-const default_lang = 'en'
+//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.
- * @param {string} stringData 
+ * @param {string} stringData
  */
 function parseLanguageData(stringData) {
-  var arrayData = stringData.split(',').map(element => 
-    element.split(/[-;]/).shift()
-  );
-  arrayData.push(default_lang)
-  return arrayData
+  var arrayData = stringData
+    .split(",")
+    .map(element => element.split(/[-;]/).shift());
+  arrayData.push(default_lang);
+  return arrayData;
 }
 
 /**
  * Get the language we can display.
  */
 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
+  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 
+ * @param {array} availableLanguages
+ * @param {array} userLanguages
  */
 function matchLanguage(availableLanguages, userLanguages) {
   for (let index = 0; index < userLanguages.length; index++) {
@@ -44,26 +47,48 @@ function matchLanguage(availableLanguages, userLanguages) {
     for (let index = 0; index < availableLanguages.length; index++) {
       const availableLanguage = availableLanguages[index];
       if (userLanguage === availableLanguage) {
-        return userLanguage
+        return userLanguage;
       }
     }
   }
 }
 
+//JSON object to be added to language's cookie
+let langAsked = {
+  langIndice: null
+};
+
 app
+  .use(cookieParser())
   .use(express.static(distPath))
   // .use('/src', express.static(join(__dirname, 'src')))
+
+  //Route for adding lang's cookie
+  //    res.cookie("langData", langAsked);
+
   .get(/^[^.]*$/, (req, rep) => {
-    var langRequired = matchLanguage(getAvailableLanguage(), parseLanguageData(req.headers["accept-language"]))
-    rep.sendFile(join(__dirname, distPath, `/index-${langRequired}.html`))
-  }
-  )
+    if (langAsked.langIndice == null) {
+      var langRequired = matchLanguage(
+        getAvailableLanguage(),
+        parseLanguageData(req.headers["accept-language"])
+      );
+      langAsked = {
+        langIndice: langRequired
+      };
+      rep.cookie("langData", langAsked);
+      console.log("langAsked", langAsked)
+    } else {
+      var langRequired = langAsked.langIndice;
+    }
+
+    rep.sendFile(join(__dirname, distPath, `/index-${langRequired}.html`));
+  })
   .listen(port);
 
 // browser sync
-const bs = require('browser-sync').create();
+const bs = require("browser-sync").create();
 bs.init({
-  files: [distPath + '/**/*'],
+  files: [distPath + "/**/*"],
   proxy: `http://localhost:${port}`,
   open: false,
   notify: false,
-- 
GitLab


From 1f61e2ff132e895d1e491316f096c2409229f9f3 Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Mon, 4 Nov 2019 15:55:37 +0100
Subject: [PATCH 06/13] The language selector works

---
 server.js                                     | 16 +++---------
 .../entrepreneur/components/header.pug        |  2 +-
 src/includes/mentor/components/header.pug     |  2 +-
 src/includes/public/components/header.pug     |  2 +-
 src/scripts/coopstarter.js                    | 26 +++++++++++++++++++
 5 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/server.js b/server.js
index adf022f4..93e04df6 100644
--- a/server.js
+++ b/server.js
@@ -53,21 +53,14 @@ function matchLanguage(availableLanguages, userLanguages) {
   }
 }
 
-//JSON object to be added to language's cookie
-let langAsked = {
-  langIndice: null
-};
-
 app
   .use(cookieParser())
   .use(express.static(distPath))
   // .use('/src', express.static(join(__dirname, 'src')))
 
-  //Route for adding lang's cookie
-  //    res.cookie("langData", langAsked);
-
   .get(/^[^.]*$/, (req, rep) => {
-    if (langAsked.langIndice == null) {
+    // 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"])
@@ -76,12 +69,11 @@ app
         langIndice: langRequired
       };
       rep.cookie("langData", langAsked);
-      console.log("langAsked", langAsked)
     } else {
-      var langRequired = langAsked.langIndice;
+      langAsked = req.cookies.langData.langIndice
     }
 
-    rep.sendFile(join(__dirname, distPath, `/index-${langRequired}.html`));
+    rep.sendFile(join(__dirname, distPath, `/index-${langAsked}.html`));
   })
   .listen(port);
 
diff --git a/src/includes/entrepreneur/components/header.pug b/src/includes/entrepreneur/components/header.pug
index 998a38c1..ed209a7a 100644
--- a/src/includes/entrepreneur/components/header.pug
+++ b/src/includes/entrepreneur/components/header.pug
@@ -7,7 +7,7 @@
         include menu.pug
         
         div.flex.flex_espace.flex_item_center
-            sib-form(
+            sib-form.languageChoic(
                 data-src=`${endpoints.languages}`
                 fields='languages'
                 range-languages=`${endpoints.languages}`
diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index 44de2130..49ee5433 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -7,7 +7,7 @@
         include menu.pug
         
         div.flex.flex_espace.flex_item_center
-            sib-form(
+            sib-form.languageChoice(
                 data-src=`${endpoints.languages}`
                 fields='languages'
                 range-languages=`${endpoints.languages}`
diff --git a/src/includes/public/components/header.pug b/src/includes/public/components/header.pug
index dcd974cb..dd4fd78f 100644
--- a/src/includes/public/components/header.pug
+++ b/src/includes/public/components/header.pug
@@ -7,7 +7,7 @@
         include menu.pug
         
         div.flex.flex_espace.flex_item_center
-            sib-form(
+            sib-form.languageChoic(
                 data-src=`${endpoints.languages}`
                 fields='languages'
                 range-languages=`${endpoints.languages}`
diff --git a/src/scripts/coopstarter.js b/src/scripts/coopstarter.js
index 0312cf45..675b9d71 100644
--- a/src/scripts/coopstarter.js
+++ b/src/scripts/coopstarter.js
@@ -325,6 +325,29 @@ function manageLogoutButton() {
   }
 }
 
+
+/**
+ * Manage the select language
+ */
+function manageSelectLanguage() {
+  const languageSelects = document.getElementsByClassName("languageChoice")
+  for (let item of languageSelects) {
+    item.addEventListener("change", function() {
+      uriLanguge = item.querySelector("option:checked").value
+      document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22fr%22%7D"
+      if (uriLanguge === '{"@id": "http://localhost:8000/languages/1/"}') {
+        document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22fr%22%7D"
+        location.reload()
+      } else {
+        document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22en%22%7D"
+        location.reload()
+      }
+      
+    })
+  }
+  
+}
+
 /**
  * Initi the custom form file behaviour
  * Todo : we can improve the performance adding param to reduce the loop
@@ -589,6 +612,9 @@ jQuery(document).ready(function($) {
   //Manage the logout action
   manageLogoutButton();
 
+  //Manage the select language
+  manageSelectLanguage();
+
   /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   XXXXXXXXXXXXXXXXXXXXXX MENTOR DASHBOARD XXXXXXXXXXXXXXXXXXXX
-- 
GitLab


From ddffb226f7f51cfb9ed3b2df9b37dbd7aca5ea1a Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Thu, 7 Nov 2019 13:34:21 +0100
Subject: [PATCH 07/13] Good solution for internationalisation.

---
 compile-pug.js                                | 12 +--
 server.js                                     | 79 ++-----------------
 .../entrepreneur/components/header.pug        |  6 +-
 src/includes/entrepreneur/dashboard.pug       |  2 +-
 .../entrepreneur/profile/confirmation.pug     |  6 +-
 src/includes/entrepreneur/profile/create.pug  | 10 +--
 src/includes/entrepreneur/profile/detail.pug  | 10 +--
 src/includes/entrepreneur/profile/edit.pug    | 14 ++--
 src/includes/entrepreneur/requests/create.pug | 27 ++++---
 .../entrepreneur/resources/detail.pug         | 30 +++----
 src/includes/entrepreneur/resources/list.pug  | 38 ++++-----
 ...source-report-broken-link-entrepreneur.pug |  4 +-
 src/includes/mentor/browseDatabase.pug        | 38 ++++-----
 src/includes/mentor/components/header.pug     |  8 +-
 src/includes/mentor/components/menu.pug       |  2 +-
 src/includes/mentor/dashboard.pug             |  4 +-
 src/includes/mentor/profile/confirmation.pug  |  6 +-
 src/includes/mentor/profile/create.pug        | 32 ++++----
 src/includes/mentor/profile/detail.pug        | 20 ++---
 src/includes/mentor/profile/edit.pug          | 36 ++++-----
 src/index.pug                                 |  4 +-
 translation/en.yml                            | 78 +++++++++++++++++-
 translation/fr.yml                            | 72 ++++++++++++++++-
 23 files changed, 307 insertions(+), 231 deletions(-)

diff --git a/compile-pug.js b/compile-pug.js
index 0636f12d..46671768 100644
--- a/compile-pug.js
+++ b/compile-pug.js
@@ -41,12 +41,12 @@ async function compile() {
   await fs.mkdir(outDir, { recursive: true })
 
   await Promise.all(
-    Object.entries(langData).map(([lang, data]) => {
-      options.lang=lang
-      options.data=data
-
-      const html = pugFct(options)
-      const filename = `${outDir}/index-${lang}.html`
+    Object.entries(langData).map(async([lang, data]) => {
+      const opt = Object.assign({}, options, { lang, data });
+      const dir = `${outDir}/${lang}`
+      await fs.mkdir(dir, { recursive: true })
+      const html = pugFct(opt)
+      const filename = `${dir}/index.html`
       console.log(`write ${filename}`)
       return fs.writeFile(filename, html)
     }),
diff --git a/server.js b/server.js
index 93e04df6..6d3e1bf0 100644
--- a/server.js
+++ b/server.js
@@ -1,86 +1,23 @@
-const port = 9001;
+const port = 9000;
 const browserSyncPort = 3000;
-const distPath = "www";
-const fs = require("fs");
-const path = require("path");
+const distPath = 'www';
 
 // express server
-const { join } = require("path");
-const express = require("express");
+const { join } = require('path');
+const express = require('express');
 const app = express();
-let cookieParser = require("cookie-parser");
-
-//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.
- * @param {string} stringData
- */
-function parseLanguageData(stringData) {
-  var arrayData = stringData
-    .split(",")
-    .map(element => element.split(/[-;]/).shift());
-  arrayData.push(default_lang);
-  return arrayData;
-}
-
-/**
- * Get the language we can display.
- */
-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) {
-        return userLanguage;
-      }
-    }
-  }
-}
-
 app
-  .use(cookieParser())
   .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 {
-      langAsked = req.cookies.langData.langIndice
-    }
-
-    rep.sendFile(join(__dirname, distPath, `/index-${langAsked}.html`));
+  .get('/:lang/:path([^.]*)', (req, rep) => {
+    rep.sendFile(join(__dirname, distPath, `${req.params.lang}/index.html`));
   })
   .listen(port);
 
 // browser sync
-const bs = require("browser-sync").create();
+const bs = require('browser-sync').create();
 bs.init({
-  files: [distPath + "/**/*"],
+  files: [distPath + '/**/*'],
   proxy: `http://localhost:${port}`,
   open: false,
   notify: false,
diff --git a/src/includes/entrepreneur/components/header.pug b/src/includes/entrepreneur/components/header.pug
index ed209a7a..493c1cd6 100644
--- a/src/includes/entrepreneur/components/header.pug
+++ b/src/includes/entrepreneur/components/header.pug
@@ -27,10 +27,10 @@
                     ul
                         li
                             sib-link(next='entrepreneur-dashboard')
-                                p Dashboard
+                               p= data.Dashboard
                         li
                             sib-link(next='entrepreneur-account')
-                                p My account
+                                p= data.MyAccount
                         li
                             a.logout-button
-                                p Logout
\ No newline at end of file
+                                p= data.Logout
\ No newline at end of file
diff --git a/src/includes/entrepreneur/dashboard.pug b/src/includes/entrepreneur/dashboard.pug
index 5c795315..681e6c66 100644
--- a/src/includes/entrepreneur/dashboard.pug
+++ b/src/includes/entrepreneur/dashboard.pug
@@ -28,7 +28,7 @@ section#home
             include ./requests/create.pug
 
         dialog#entrepreneur-request-validation.no-sidebar.container
-            p You request has been submitted
+            p=`${data.YouRequestHasBeenSubmitted}`
             p.flex
                 sib-link(next='entrepreneur-resource-list', class='button_base') Ok
 
diff --git a/src/includes/entrepreneur/profile/confirmation.pug b/src/includes/entrepreneur/profile/confirmation.pug
index 69a6c69c..df14f292 100644
--- a/src/includes/entrepreneur/profile/confirmation.pug
+++ b/src/includes/entrepreneur/profile/confirmation.pug
@@ -1,9 +1,9 @@
 div.container_min
-    h2.title_lead.fd_bleu Edit your account
+    h2.title_lead.fd_bleu= data.EditYourAccount
 
-p.p_entete Your modifications have properly been saved.
+p.p_entete= data.ModificationsProperlySaved
 
 div
     div.flex
         h3.button_base
-            sib-link(next='entrepreneur-resource-list') -> Back to the database
\ No newline at end of file
+            sib-link(next='entrepreneur-resource-list')= data.BackToDashboard
\ No newline at end of file
diff --git a/src/includes/entrepreneur/profile/create.pug b/src/includes/entrepreneur/profile/create.pug
index ccfda50e..a3dd7ead 100644
--- a/src/includes/entrepreneur/profile/create.pug
+++ b/src/includes/entrepreneur/profile/create.pug
@@ -8,7 +8,7 @@ figure.logo.img_log
     img(src="../images/fusee.png" 
         alt="Create an entrepreneur account")
 
-h2.title_create Complete your entrepreneur account
+h2.title_create=`${data.CompleteEntrepreneurAccount}`
 
 sib-form#entrepreneur_profile_creation.block_log.block_creat_count(
     bind-user
@@ -16,9 +16,9 @@ sib-form#entrepreneur_profile_creation.block_log.block_creat_count(
     
     range-entrepreneur_profile.organisation=`${endpoints.organisations}`
 
-    label-first_name="Surname"
-    label-last_name="Name"
-    label-entrepreneur_profile.organisation="Organisation *"
+    label-first_name=`${data.Surname}`
+    label-last_name=`${data.Name}`
+    label-entrepreneur_profile.organisation=`${data.Organisation}`
     
     class-entrepreneur_profile.organisation='form-label is-dark'
     widget-entrepreneur_profile.organisation='sib-form-auto-completion'
@@ -29,7 +29,7 @@ sib-form#entrepreneur_profile_creation.block_log.block_creat_count(
     widget-account.picture='cs-form-file-custom'
     class-account.picture='input_photo w_25'
     
-    submit-button="COMPLETE YOUR ACCOUNT"
+    submit-button=`${data.CompleteYourAccount}`
     next="entrepreneur-dashboard"
 )
 
diff --git a/src/includes/entrepreneur/profile/detail.pug b/src/includes/entrepreneur/profile/detail.pug
index e0099ead..eeea2edf 100644
--- a/src/includes/entrepreneur/profile/detail.pug
+++ b/src/includes/entrepreneur/profile/detail.pug
@@ -1,23 +1,23 @@
 include ../../components/widgets
 
 div.container_min
-    h2.title_lead.fd_bleu My Account
+    h2.title_lead.fd_bleu=`${data.MyAccount}`
 
 div.block_list.flex
     div.button__actions.w_25
 
         div.dashboard__database
             sib-link(next='entrepreneur-database')
-                div.button_base.ico_gauche.ico_database Browse database
+                div.button_base.ico_gauche.ico_database=`${data.BrowseDatabase}`
 
         div.dashboard__database
             sib-link(next='entrepreneur-resource-list')
-                div.button_base.ico_gauche.ico_search Back to dashboard
+                div.button_base.ico_gauche.ico_search=`${data.BackToDashboard}`
 
         div.dashboard__database
                 div.logout-button.button_base(
                     role='log out'
-                ) Logout  
+                )=`${data.Logout}`
     
     div.profile_information.block_log.w_75
         sib-link(next='entrepreneur-account-edit')
@@ -35,7 +35,7 @@ div.block_list.flex
         sib-display#entrepreneur_contact(
             bind-user
             fields='email'
-            label-email='Email:'
+            label-email=`${data.Email}`
             class-email="contact_profil"
             widget-email='cs-display-resource-property'
         )
\ No newline at end of file
diff --git a/src/includes/entrepreneur/profile/edit.pug b/src/includes/entrepreneur/profile/edit.pug
index 8028caf0..f3f90cb1 100644
--- a/src/includes/entrepreneur/profile/edit.pug
+++ b/src/includes/entrepreneur/profile/edit.pug
@@ -1,16 +1,16 @@
 include ../../components/widgets
 
-h2.title_create Edit your account
+h2.title_create= data.EditYourAccount
 
 sib-form#entrepreneur_profile_edition.block_log.block_creat_count(
     bind-user
     fields="info(last_name, first_name, username, email, entrepreneur_profile.organisation, account.picture)"     
     range-entrepreneur_profile.organisation=`${endpoints.organisations}`
     
-    label-first_name="Surname"
-    label-last_name="Name"
-    label-entrepreneur_profile.organisation="Organisation"
-    label-account.picture="Profile picture"
+    label-first_name=`${data.Surname}`
+    label-last_name=`${data.Name}`
+    label-entrepreneur_profile.organisation=`${data.Organisation}`
+    label-account.picture=`${data.Photo}`
     widget-username="sib-form-hidden"
 
     class-last_name='form-label is-dark input_big'
@@ -25,8 +25,8 @@ sib-form#entrepreneur_profile_edition.block_log.block_creat_count(
     widget-account.picture='cs-form-file-custom'
     class-account.picture='input_photo w_25'
 
-    submit-button="Save modifications"
+    submit-button=`${data.SaveModification}`
     next='entrepreneur-account-edit-confirmation'
 )
 
-sib-link(class="backlink", next="entrepreneur-resource-list") Back to the dashboard
\ No newline at end of file
+sib-link(class="backlink", next="entrepreneur-resource-list")= data.BackToDashboard
\ No newline at end of file
diff --git a/src/includes/entrepreneur/requests/create.pug b/src/includes/entrepreneur/requests/create.pug
index c0852549..8291703f 100644
--- a/src/includes/entrepreneur/requests/create.pug
+++ b/src/includes/entrepreneur/requests/create.pug
@@ -4,11 +4,12 @@
                         p.backlink 
                                 i.fas.fa-times
         div#resource-creation-form-loader
-                hidden Loading form, please wait...
+                hidden
+                        i.fas.fa-spinner.fa-spin
 
-        h2.title_form  Request a ressource
+        h2.title_form=`${data.RequestRessource}`
 
-        p.p_entete You can't find a resource you are looking for ? You need resources to acquire certain skills or progress in your cooperative developement ? It can be a book, a document model, a tutorial, anything you need, make a request to our mentors so they know how to help you.
+        p.p_entete=`${data.RequestRessourceInfo}`
         img(src="../images/asid_entre.png" alt="rechercher de ressources")
 
         sib-form#resource-creation-form(
@@ -25,16 +26,16 @@
                 range-organisation=`${endpoints.organisations}`
                 range-country=`${endpoints.countries}`
 
-                label-header_mandatory='Mandatory information'
-                label-header_complementary='Complementary information'
+                label-header_mandatory=`${data.MandatoryInformation}`
+                label-header_complementary=`${data.ComplementaryInformation}`
 
-                label-name='Title*'
-                label-description='Description'
-                label-language='Language*'
-                label-country='Country*'
-                label-field='Field*'
-                label-organisation='Organisation'
-                label-skills='What do you need to learn with this resource ?'
+                label-name=`${data.TitleRequired}`
+                label-description=`${data.Description}`
+                label-language=`${data.Language}`
+                label-country=`${data.Country}`
+                label-field=`${data.FieldRequired}`
+                label-organisation=`${data.Organisation}`
+                label-skills=`${data.SkillToLearn}`
                 
                 multiple-fields='sib-multiple-select'
                 widget-fields='sib-form-auto-completion'
@@ -47,7 +48,7 @@
                 widget-skills='sib-form-textarea'
                 widget-organisation='sib-form-auto-completion'
 
-                submit-button='Send request'
+                submit-button=`${data.SendRequest}`
                 next="entrepreneur-request-validation"
         )
 
diff --git a/src/includes/entrepreneur/resources/detail.pug b/src/includes/entrepreneur/resources/detail.pug
index dbb6ea52..399d29fc 100644
--- a/src/includes/entrepreneur/resources/detail.pug
+++ b/src/includes/entrepreneur/resources/detail.pug
@@ -46,31 +46,31 @@ include ../../components/widgets
     class-review.reviewer.name="validator_ressource"
     widget-header_specifications='cs-section_header'
     
-    label-broken='Report broken link'
-    label-sharing='Access:'
-    label-language.name='Language:'
-    label-publication_year='Year of publication:'
-    label-header_specifications='Resource specifications'
+    label-broken=`${data.ReportBrokenLink}`
+    label-sharing=`${data.Access}`
+    label-language.name=`${data.Language}`
+    label-publication_year=`${data.DatePublication}`
+    label-header_specifications=`${data.ResourceSpecifications}`
     class-format.name='format_type'
     label-format.name=''
 
     widget-steps='cs-display-step-property'
     label-steps=''
-    each-label-steps="Step"
+    each-label-steps=`${data.Step}`
     multiple-steps
 
     widget-fields='cs-display-multiple-property'
     label-fields=''
-    each-label-fields='Field:'
+    each-label-fields=`${data.Field}`
     multiple-fields
 
-    label-skills='With this resource, you will be able to:'
-    label-uri='Link to resource'
+    label-skills=`${data.WithThisResourceBeAbleTo}`
+    label-uri=`${data.LinkToResource}`
     name-uri='original-link'
-    label-country.name='Country:'
-    label-submitter.mentor_profile.organisation.name='Organisation:'
-    label-author='Author :'
-    label-submitter.name='Resource posted by:'
+    label-country.name=`${data.Country}`
+    label-submitter.mentor_profile.organisation.name=`${data.Organisation}`
+    label-author=`${data.Author}`
+    label-submitter.name=`${data.ResourcePostedBy}`
     action-broken='resource-report-broken-link-entrepreneur'
   )
 
@@ -98,7 +98,7 @@ include ../../components/widgets
     bind-resources
     fields=""
     nested-field="conversations"
-    counter-template="<p>Comments (${counter})</p>"
+    counter-template=`<p>${data.Comments} (${counter})</p>`
   )
 
   sib-conversation(
@@ -106,7 +106,7 @@ include ../../components/widgets
     id-suffix="conversations"
   )
 
-  h2.title_lead_avenir Related resources
+  h2.title_lead_avenir=`${data.RelatedResources}`
 
   sib-display(
     bind-resources,
diff --git a/src/includes/entrepreneur/resources/list.pug b/src/includes/entrepreneur/resources/list.pug
index 20b2f851..3e846b1e 100644
--- a/src/includes/entrepreneur/resources/list.pug
+++ b/src/includes/entrepreneur/resources/list.pug
@@ -7,8 +7,8 @@ dialog#resource-report-broken-link-entrepreneur
     include ./resource-report-broken-link-entrepreneur
 
 div.container_min
-        h2.title_lead.fd_bleu International index of resources for cooperative mentors and entrepreneurs
-        button.button_dark.pull-right Watch the presentation
+        h2.title_lead.fd_bleu=`${data.generalLabel}`
+        button.button_dark.pull-right=`${data.WatchThePresentation}`
             i.far.fa-play-circle
 
 //-About : 
@@ -19,7 +19,7 @@ container.block_list
     div.flex.flex_espace
         div.w_75.block-g-entre
             div
-                h2.title_form Search for a resource
+                h2.title_form=`${data.SearchForResource}`
                 div#resources-loader
                     hidden
                         i.fas.fa-spinner.fa-spin
@@ -27,13 +27,13 @@ container.block_list
                     data-src=`${endpoints.resources}`,
                     loader-id="resources-loader"
                     fields='keyword(name_keyword)'    
-                    label-name_keyword="Search by name..."
+                    label-name_keyword=`${data.SearchByNam}`
                     widget-name_keyword="sib-form-placeholder-text"
                     naked    
                 )
 
                 div.keyword_submit.button__actions
-                    div.button_base.ico_gauche Search
+                    div.button_base.ico_gauche=`${data.Search}`
 
                 sib-form.instance_database_only(
                     data-src=`${endpoints.resources}`,
@@ -47,12 +47,12 @@ container.block_list
                 sib-form.more_criterias.flex.flex_espace(
                     data-src=`${endpoints.resources}`,
                     fields='header_criterias, format, publication_year, country, language, fields'
-                    label-header_criterias='More criterias'
-                    label-format='Format:'
-                    label-publication_year='Year of publication'
-                    label-country='Country of publication'
-                    label-language='Language'
-                    label-fields='Field'
+                    label-header_criterias=`${data.Search}`
+                    label-format=`${data.Format}`
+                    label-publication_year=`${data.DatePublication}`
+                    label-country=`${data.CountryPublication}`
+                    label-language=`${data.Language}`
+                    label-fields=`${data.Field}`
                     widget-header_criterias='cs-section_header'
 
                     range-language=`${endpoints.languages}`
@@ -78,11 +78,11 @@ container.block_list
         div.w_25
             div.block_aside_entre
                 img(src="../images/asid_entre.png" alt="rechercher de ressources")
-                p Can't find the ressource you need ?
+                p=`${data.CantFindRessourceYouNeed}`
                 div.button__actions
                     sib-link(next='entrepreneur-request-create')
                         div
-                        div.button_base Make a request
+                        div.button_base=`${data.MakeRequest}`
 
     
         //Fake tabs to filter by type.
@@ -115,7 +115,7 @@ container.block_list
                         fields='name'
                         class="accordion active"
         
-                        label-name ='Step 1 '
+                        label-name =`${data.MakeRequest} 1 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'
@@ -171,7 +171,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name ='Step 2 '
+                        label-name =`${data.MakeRequest} 2 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'  
@@ -225,7 +225,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name ='Step 3 '
+                        label-name =`${data.MakeRequest} 3 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'  
@@ -279,7 +279,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name ='Step 4 '
+                        label-name =`${data.MakeRequest} 4 `
                         label-resources=''
         
                         widget-name='cs-steps-header'
@@ -335,7 +335,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name ='Step 5 '
+                        label-name =`${data.MakeRequest} 5 `
                         label-resources=''
         
                         widget-name='cs-steps-header'       
@@ -390,7 +390,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name ='Step 6 '
+                        label-name =`${data.MakeRequest} 6 `
                         label-resources=''
         
                         widget-name='cs-steps-header'       
diff --git a/src/includes/entrepreneur/resources/resource-report-broken-link-entrepreneur.pug b/src/includes/entrepreneur/resources/resource-report-broken-link-entrepreneur.pug
index 28896924..4026a559 100644
--- a/src/includes/entrepreneur/resources/resource-report-broken-link-entrepreneur.pug
+++ b/src/includes/entrepreneur/resources/resource-report-broken-link-entrepreneur.pug
@@ -4,8 +4,8 @@
                 p 
                     i.fas.fa-times
 
-    h2.title_lead_avenir Thanks!
-    p The submitter of the resource will be advised that this link is broken.
+    h2.title_lead_avenir=`${data.Thanks}`
+    p=`${data.ConfirmSendBrokenLink}`
     sib-form#report-broken-link-entrepreneur(
         data-src=`${endpoints.brokenlinks}`
         fields = "resource, submitter"
diff --git a/src/includes/mentor/browseDatabase.pug b/src/includes/mentor/browseDatabase.pug
index 4b3d385e..56b50163 100644
--- a/src/includes/mentor/browseDatabase.pug
+++ b/src/includes/mentor/browseDatabase.pug
@@ -2,8 +2,8 @@ include ../components/widgets
 
 
 div.container_min
-        h2.title_lead.fd_bleu International index of resources for cooperative mentors and entrepreneurs
-        button.button_dark.pull-right Watch the presentation
+        h2.title_lead.fd_bleu=`${data.generalLabel}`
+        button.button_dark.pull-right= `${data.WatchThePresentation}`
             i.far.fa-play-circle
 
 div.block_list
@@ -11,17 +11,17 @@ div.block_list
         div.resources__newresource
             sib-link(next='mentor-resource-create')
                 div
-                div.button_base.ico_gauche.ico_plus Post a new Resource
+                div.button_base.ico_gauche.ico_plus= `${data.PostResource}`
 
         div.dashboard__database
             sib-link(next='mentor-resource-list')
-                div.button_base.ico_gauche.ico_database Back to dashboard
+                div.button_base.ico_gauche.ico_database= `${data.BackToDashboard}`
 
 
 container.block_list.flex.flex_espace
     div.w_75.block-g-entre
         div
-            h2.title_form Search for a resource
+            h2.title_form= `${data.SearchForResource}`
             div#resources-mentor-database-loader
                 hidden
                     i.fas.fa-spinner.fa-spin
@@ -30,14 +30,14 @@ container.block_list.flex.flex_espace
                 data-src=`${endpoints.resources}`,
                 loader-id="resources-mentor-database-loader"
                 fields='keyword(name_keyword)'    
-                label-name_keyword="Search by name..."
+                label-name_keyword=`${data.SearchByNam}`
                 widget-name_keyword="sib-form-placeholder-text"
 
                 naked    
             )
 
             div.keyword_submit.button__actions
-                div.button_base.ico_gauche Search
+                div.button_base.ico_gauche=`${data.Search}`
             
             sib-form.instance_database_only(
                 data-src=`${endpoints.resources}`,
@@ -50,12 +50,12 @@ container.block_list.flex.flex_espace
         sib-form.more_criterias.flex.flex_espace(
             data-src=`${endpoints.resources}`,
             fields='header_criterias, format, publication_year, country, language, fields'
-            label-header_criterias='More criterias'
-            label-format='Format:'
-            label-publication_year='Year of publication'
-            label-country='Country of publication'
-            label-language='Language'
-            label-fields='Field'
+            label-header_criterias=`${data.MoreCriterias}`
+            label-format=`${data.Format}`
+            label-publication_year=`${data.DatePublication}`
+            label-country=`${data.CountryPublication}`
+            label-language=`${data.Language}`
+            label-fields=`${data.Field}`
             widget-header_criterias='cs-section_header'
 
             range-language=`${endpoints.languages}`
@@ -108,7 +108,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion active"
 
-                    label-name ='Step 1 '
+                    label-name =`${data.Step} 1`,
                     label-resources=''
                     
                     widget-name='cs-steps-header'
@@ -162,7 +162,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 2 '
+                    label-name =`${data.Step} 2`,
                     label-resources=''
                     
                     widget-name='cs-steps-header'  
@@ -216,7 +216,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 3 '
+                    label-name =`${data.Step} 3`,
                     label-resources=''
                     
                     widget-name='cs-steps-header'   
@@ -271,7 +271,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 4 '
+                    label-name =`${data.Step} 4`,
                     label-resources=''
 
                     widget-name='cs-steps-header'
@@ -326,7 +326,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 5 '
+                    label-name =`${data.Step} 5`,
                     label-resources=''
 
                     widget-name='cs-steps-header'       
@@ -380,7 +380,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
     
-                    label-name ='Step 6 '
+                    label-name =`${data.Step} 6`,
                     label-resources=''
     
                     widget-name='cs-steps-header'       
diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index 49ee5433..b4afb121 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -28,13 +28,13 @@
                     ul
                         li
                             sib-link(next='mentor-dashboard')
-                                p Dashboard
+                                p= data.Dashboard
                         li
                             sib-link(next='mentor-database')
-                                p Resources database
+                                p= data.ResourcesDatabase
                         li
                             sib-link(next='mentor-account')
-                                p My account
+                                p= data.MyAccount
                         li
                             a.logout-button
-                                p Logout
\ No newline at end of file
+                                p= data.Logout
\ No newline at end of file
diff --git a/src/includes/mentor/components/menu.pug b/src/includes/mentor/components/menu.pug
index fbf8d640..8aa5ce80 100644
--- a/src/includes/mentor/components/menu.pug
+++ b/src/includes/mentor/components/menu.pug
@@ -1,4 +1,4 @@
-sib-router(default-route='mentor-resource-list')
+sib-router(default-route='mentor-resource-list' route-prefix=lang)
     sib-route(name='mentor-resource-list')
     sib-route(name='mentor-account', id-prefix=`${endpoints.users}`, use-id)
     sib-route(name='mentor-account-edit', id-prefix=`${endpoints.users}`, use-id)
diff --git a/src/includes/mentor/dashboard.pug b/src/includes/mentor/dashboard.pug
index d34b539a..470065c8 100644
--- a/src/includes/mentor/dashboard.pug
+++ b/src/includes/mentor/dashboard.pug
@@ -33,11 +33,11 @@ section#home
         include ./browseDatabase.pug
 
     #mentor-resource-create(hidden).no-sidebar.container
-        sib-link(class="backlink", next="mentor-resource-list") Back to the dashboard
+        sib-link(class="backlink", next="mentor-resource-list")=`${data.BackToDashboard}`
         include resources/create.pug
 
     #mentor-resource-edit(hidden).no-sidebar.container
-        sib-link(class="backlink", next="mentor-resource-list") Back to the dashboard
+        sib-link(class="backlink", next="mentor-resource-list")=`${data.BackToDashboard}`
         include resources/edit.pug
 
     #resource-creation-confirmation(hidden).no-sidebar.container
diff --git a/src/includes/mentor/profile/confirmation.pug b/src/includes/mentor/profile/confirmation.pug
index d6b54388..7e318508 100644
--- a/src/includes/mentor/profile/confirmation.pug
+++ b/src/includes/mentor/profile/confirmation.pug
@@ -1,9 +1,9 @@
 div.container_min
-    h2.title_lead.fd_bleu Edit your account
+    h2.title_lead.fd_bleu= data.EditYourAccount
 
-p.p_entete Your modifications have properly been saved.
+p.p_entete= data.ModificationsProperlySaved
 
 div
     div.flex
         h3.button_base
-            sib-link(next='mentor-resource-list') -> Back to dashboard
\ No newline at end of file
+            sib-link(next='mentor-resource-list')= data.BackToDashboard
\ No newline at end of file
diff --git a/src/includes/mentor/profile/create.pug b/src/includes/mentor/profile/create.pug
index 677dd802..318cce1d 100644
--- a/src/includes/mentor/profile/create.pug
+++ b/src/includes/mentor/profile/create.pug
@@ -8,7 +8,7 @@ figure.logo.img_log
     img(src="../images/mentor.png" 
         alt="Create a mentor account")
 
-h2.title_create Complete your mentor account
+h2.title_create= data.CompleteMentorAccount
 
 sib-form#mentor_profile_creation.block_log.block_creat_count(
     bind-user
@@ -23,25 +23,25 @@ sib-form#mentor_profile_creation.block_log.block_creat_count(
     range-mentor_profile.languages=`${endpoints.languages}`
     range-mentor_profile.country=`${endpoints.countries}`
 
-    label-header_about_you="About you"
-    label-header_social_media="Social medias"
+    label-header_about_you=`${data.AboutYou}`
+    label-header_social_media=`${data.SocialMedias}`
     
     widget-header_social_media="cs-section_header"
     widget-header_about_you="cs-section_introduction"
     
-    label-first_name="Surname"
-    label-last_name="Name"
-    label-mentor_profile.organisation="Organisation"
-    label-mentor_profile.phone="Phone number"
-    label-mentor_profile.languages="Languages"
-    label-mentor_profile.fields="Fields"
-    label-account.picture="Photo"
-    label-mentor_profile.headline="Headline or current position"
+    label-first_name=`${data.Surname}`
+    label-last_name=`${data.Name}`
+    label-mentor_profile.organisation=`${data.Organisation}`
+    label-mentor_profile.phone=`${data.PhoneNumber}`
+    label-mentor_profile.languages=`${data.Language}`
+    label-mentor_profile.fields=`${data.Field}`
+    label-account.picture=`${data.Photo}`
+    label-mentor_profile.headline=`${data.Headline}`
     class-mentor_profile.headline="w_75"
-    label-mentor_profile.city="City"
-    label-mentor_profile.country="Country"
-    label-mentor_profile.biography="Tell us more about your activities"
-    label-mentor_profile.skills="What skills can you share with our entrepreneurs ?"
+    label-mentor_profile.city=`${data.City}`
+    label-mentor_profile.country=`${data.Country}`
+    label-mentor_profile.biography=`${data.ActivitiesMore}`
+    label-mentor_profile.skills=`${data.SkillForEntrepreneur}`
     label-mentor_profile.linkedin="Linkedin"
     label-mentor_profile.twitter="Twitter"
 
@@ -66,6 +66,6 @@ sib-form#mentor_profile_creation.block_log.block_creat_count(
     class-account.picture='input_photo w_25'
     class-headline='w_75'
 
-    submit-button="COMPLETE YOUR ACCOUNT"
+    submit-button=`${data.CompleteYourAccount}`
     next='mentor-dashboard'
 )
diff --git a/src/includes/mentor/profile/detail.pug b/src/includes/mentor/profile/detail.pug
index bdd0091f..14788928 100644
--- a/src/includes/mentor/profile/detail.pug
+++ b/src/includes/mentor/profile/detail.pug
@@ -1,27 +1,27 @@
 include ../../components/widgets
 
 div.container_min
-    h2.title_lead.fd_bleu My Account
+    h2.title_lead.fd_bleu=`${data.MyAccount}`
 
 div.block_list.flex
     div.button__actions.w_25
         div.resources__newresource
             sib-link(next='mentor-resource-create')
                 div
-                div.button_base.ico_gauche.ico_plus Post a new Resource
+                div.button_base.ico_gauche.ico_plus=`${data.PostResource}`
 
         div.dashboard__database
             sib-link(next='mentor-database')
-                div.button_base.ico_gauche.ico_database Browse database
+                div.button_base.ico_gauche.ico_database=`${data.BrowseDatabase}`
 
         div.dashboard__database
             sib-link(next='mentor-resource-list')
-                div.button_base.ico_gauche.ico_search Back to dashboard
+                div.button_base.ico_gauche.ico_search=`${data.BackToDashboard}`
 
         div.dashboard__database
                 div.logout-button.button_base(
                     role='log out'
-                ) Logout
+                )=`${data.Logout}`
     
     div.profile_information.block_log.w_75
         sib-link(next='mentor-account-edit')
@@ -41,7 +41,7 @@ div.block_list.flex
         sib-display.bold(
             fields=""
             nested-field="resources"
-            counter-template="<p>${counter} resource(s) uploaded here</p>"
+            counter-template=`<p>${counter} ${data.resourcesUploadedHere}</p>`
             bind-user
         )
 
@@ -50,8 +50,8 @@ div.block_list.flex
             fields='biography_label, mentor_profile.biography, skills_label, mentor_profile.skills'
             widget-biography_label='cs-display-label'
             widget-skills_label='cs-display-label'
-            label-skills_label='Skills:'
-            label-biography_label='Activities:'
+            label-skills_label=`${data.Skills}`
+            label-biography_label=`${data.Activities}`
             widget-mentor_profile.skills='cs-display-property'
             widget-mentor_profile.biography='cs-display-property'
         )
@@ -59,9 +59,9 @@ div.block_list.flex
         sib-display#mentor_contact(
             bind-user
             fields='email, mentor_profile.phone, mentor_profile.linkedin, mentor_profile.twitter'
-            label-email='Email:'
+            label-email=`${data.Email}`
             class-email="contact_profil"
-            label-mentor_profile.phone='Phone number:'
+            label-mentor_profile.phone=`${data.PhoneNumber}`
             class-mentor_profile.phone="contact_profil"
             widget-email='cs-display-resource-property'
             widget-mentor_profile.phone='cs-display-resource-property'
diff --git a/src/includes/mentor/profile/edit.pug b/src/includes/mentor/profile/edit.pug
index 198a850a..71402553 100644
--- a/src/includes/mentor/profile/edit.pug
+++ b/src/includes/mentor/profile/edit.pug
@@ -1,6 +1,6 @@
 include ../../components/widgets
 
-h2.title_create Edit your account
+h2.title_create= data.EditYourAccount
 
 sib-form#mentor_profile_edition.block_log.block_creat_count(
     bind-user
@@ -14,25 +14,25 @@ sib-form#mentor_profile_edition.block_log.block_creat_count(
     range-mentor_profile.organisation=`${endpoints.organisations}`
     range-mentor_profile.languages=`${endpoints.languages}`
 
-    label-header_about_you="About you"
-    label-header_social_media="Social medias"
+    label-header_about_you=`${data.AboutYou}`
+    label-header_social_media=`${data.AboutYou}`
     
     widget-header_social_media="cs-section_header"
     widget-header_about_you="cs-section_introduction"
     
-    label-first_name="Surname"
-    label-last_name="Name"
-    label-mentor_profile.organisation="Organisation"
-    label-mentor_profile.phone="Phone number"
-    label-mentor_profile.languages="Languages"
-    label-mentor_profile.fields="Fields"
-    label-account.picture="Photo"
-    label-mentor_profile.headline="Headline or current position"
+    label-first_name=`${data.Surname}`
+    label-last_name=`${data.Name}`
+    label-mentor_profile.organisation=`${data.Organisation}`
+    label-mentor_profile.phone=`${data.PhoneNumber}`
+    label-mentor_profile.languages=`${data.Language}`
+    label-mentor_profile.fields=`${data.Field}`
+    label-account.picture=`${data.Photo}`
+    label-mentor_profile.headline=`${data.Headline}`
     class-mentor_profile.headline="w_75"
-    label-mentor_profile.city="City"
-    label-mentor_profile.country="Country"
-    label-mentor_profile.biography="Tell us more about your activities"
-    label-mentor_profile.skills="What skills can you share with our entrepreneurs ?"
+    label-mentor_profile.city=`${data.City}`
+    label-mentor_profile.country=`${data.Country}`
+    label-mentor_profile.biography=`${data.ActivitiesMore}`
+    label-mentor_profile.skills=`${data.SkillForEntrepreneur}`
     label-mentor_profile.linkedin="Linkedin"
     label-mentor_profile.twitter="Twitter"
 
@@ -57,9 +57,9 @@ sib-form#mentor_profile_edition.block_log.block_creat_count(
     class-account.picture='input_photo w_25'
     class-headline='w_75'
 
-    submit-button="Save modifications"
+    submit-button=`${data.SaveModification}`
     next="mentor-account-edit-confirmation"
 )
 
-sib-link(class="backlink", next="mentor-account") Back to my account
-sib-link(class="backlink", next="mentor-resource-list") Back to the dashboard
+sib-link(class="backlink", next="mentor-account")= data.BackToMyAccount
+sib-link(class="backlink", next="mentor-resource-list")= data.BackToDashboard
diff --git a/src/index.pug b/src/index.pug
index 20604cd6..fa56f892 100644
--- a/src/index.pug
+++ b/src/index.pug
@@ -2,7 +2,7 @@ doctype html
 html
     include includes/head.pug
 
-    sib-router(default-route='splash')
+    sib-router(default-route='splash' route-prefix=lang)
         sib-route(name='splash')
         sib-route(name='account-creation')
         sib-route(name='mentor-dashboard')
@@ -56,7 +56,7 @@ script(type='module').
             );
           }
           user = await store.get(user);
-
+ 
           if (user && user.mentor_profile) {
             window.dispatchEvent(
               new CustomEvent('requestNavigation', { detail: { route: 'mentor-dashboard' } })
diff --git a/translation/en.yml b/translation/en.yml
index 9e8e911a..5da96e01 100644
--- a/translation/en.yml
+++ b/translation/en.yml
@@ -1,5 +1,77 @@
 ---
 title: My amazing website
-welcome: Hi! welcome to our website
-contact: click here to contact us
-email: contact@example.com
\ No newline at end of file
+Dashboard : Dashboard
+ResourcesDatabase : Resources database
+MyAccount : My account
+Logout : Logout
+BackToDashboard : -> Back to dashboard
+BackToMyAccount : Back to my account
+welcome : Welcome to our international index of resources for cooperative mentors and entrepreneurs
+generalLabel : International index of resources for cooperative mentors and entrepreneurs
+PostResource: Post a new Resource
+BrowseDatabase: Browse database
+ResourcesRequestingValidation: Resources requesting validation
+RequestedResources: Requested resources
+HistoryResources : History of your resources
+ConnectKnowledgeBase : Connect to the knowledge base
+AccessWithoutRegistration : Access without registration
+SearchByNam : Search by name..
+MoreCriterias : More criterias
+Language : Language
+CountryPublication : Country of publication
+Photo: Avatar
+Field : Field
+Refused : Refused
+DatePublication : Date of publication
+Format: Format
+Step: Step
+ResourcePostedBy : Resource posted by
+WithResourceAbleTo : With this resource, you will be able to
+LinkToResource : Link to resource
+ReportBrokenLink :  Report broken link
+ResourceValidatedBy : Resource validated by
+ResourceSpecifications : Resource specifications
+Author : Author
+Access : Access
+Comments : Comments
+RelatedResources : Related resources
+resourcesUploadedHere : resource(s) uploaded here
+Activities : Activities
+Skills : Skills
+PhoneNumber : Phone number
+Email: Email
+EditYourAccount : Edit your account
+Name : Name
+Surname : Surname
+AboutYou : About you
+Organisation: Organisation
+EditAbout : Informations will appear on your profile to inform entrepreneurs about your skills and activities. We will also use those information to address specific resources for validation.
+Headline : Headline or current position
+City : City
+Country : Country
+ActivitiesMore : Tell us more about your activities
+SkillForEntrepreneur : What skills can you share with our entrepreneurs ?
+SocialMedias : Social medias
+SaveModification : Save modifications
+Search : Search
+ModificationsProperlySaved: Your modifications have properly been saved.
+CompleteMentorAccount : Complete your mentor account
+CompleteEntrepreneurAccount : Complete your entrepreneur account
+CompleteYourAccount : COMPLETE YOUR ACCOUNT
+RequestRessource :  Request a ressource
+RequestRessourceInfo :  You can't find a resource you are looking for ? You need resources to acquire certain skills or progress in your cooperative developement ? It can be a book, a document model, a tutorial, anything you need, make a request to our mentors so they know how to help you.
+TitleRequired : Title*
+Description : Description
+FieldRequired: Field*
+SkillToLearn : What do you need to learn with this resource ?
+SendRequest : Send request
+MandatoryInformation : Mandatory information
+ComplementaryInformation : Complementary information
+WithThisResourceBeAbleTo : With this resource, you will be able to
+WatchThePresentation : Watch the presentation
+SearchForResource : Search for a resource
+CantFindRessourceYouNeed : Can't find the ressource you need ?
+MakeRequest: Make a request
+Thanks :  Thanks!
+ConfirmSendBrokenLink : The submitter of the resource will be advised that this link is broken.
+YouRequestHasBeenSubmitted : Your request has been submitted
\ No newline at end of file
diff --git a/translation/fr.yml b/translation/fr.yml
index eb31599a..f0da9672 100644
--- a/translation/fr.yml
+++ b/translation/fr.yml
@@ -1,4 +1,70 @@
 ---
-title: Mon superbe site
-welcome: Bonjour ! bienvenu sur notre site
-contact: cliquez ici pour nous contacter
\ No newline at end of file
+title: mon super sit
+Dashboard : Tableau de board
+ResourcesDatabase : Base de donnée de ressource
+MyAccount : Mon compte
+Logout : Déconnexion
+BackToDashboard : Retour au tableau de bord
+BackToMyAccount : Retour à mon compte
+welcome : Bienvenue dans notre répertoire international de ressources pour les mentors et les entrepreneurs coopératifs.
+generalLabel : Index international de ressources pour les mentors et les entrepreneurs coopératifs
+PostResource: Poster une nouvelle ressource
+BrowseDatabase: Rechercher dans la base de donnée
+ResourcesRequestingValidation: Ressources demandant une validation
+RequestedResources: Ressources demandées
+HistoryResources : Historique de vos ressources
+ConnectKnowledgeBase : Connexion à la base de connaissances
+AccessWithoutRegistration :  Accès sans inscription
+SearchByNam : Rechercher par nom
+MoreCriterias : PLus de critère
+Language : Langue
+CountryPublication : Pays de publication
+Photo: Avatar
+Field : Domaine
+Refused : Refusé
+DatePublication : Date de publication
+Format: Format
+Step: Étape
+ResourcePostedBy : Ressource posté par 
+WithResourceAbleTo : Avec cette ressource vous serez capable de 
+LinkToResource : Lien vers la ressource
+ReportBrokenLink :  Signaler un lien brisé
+ResourceValidatedBy : Ressource validée par 
+ResourceSpecifications : Spécification de la ressource
+Author : Auteur
+Access : Accés
+Comments : Commentaires
+RelatedResources : Ressources connexes
+resourcesUploadedHere : ressource(s) téléchargé ici
+Activities : Activités
+Skills : Compétences
+PhoneNumber : Numéro de téléphone
+Email: Email
+EditYourAccount : Modifier votre compte
+Name : Nom
+Surname : Nom de famille
+AboutYou : A propos de vous
+Organisation: Organisation
+EditAbout : Des informations apparaîtront sur votre profil pour informer les entrepreneurs de vos compétences et de vos activités. Nous utiliserons également ces informations pour adresser des ressources spécifiques pour la validation.
+Headline : Titre ou position actuelle
+City : Ville
+Country : Pays
+ActivitiesMore : Parlez-nous de vos activités
+SkillForEntrepreneur : Quelles compétences pouvez-vous partager avec nos entrepreneurs ?
+SocialMedias : Médias sociaux
+SaveModification : Enregistrer les modifications
+Search : Rechercher
+ModificationsProperlySaved: Vos modifications ont bien été enregistrées.
+CompleteMentorAccount : Completer votre compte mentor
+CompleteEntrepreneurAccount : Completer votre compte entrepreneur
+CompleteYourAccount : Completer votre compte
+RequestRessource : Demander une ressource
+RequestRessourceInfo :  Vous ne trouvez pas la ressource que vous recherchez ? Vous avez besoin de ressources pour acquérir certaines compétences ou progresser dans votre développement coopératif ? Il peut s'agir d'un livre, d'un modèle de document, d'un tutoriel, de tout ce dont vous avez besoin, faites une demande à nos mentors pour qu'ils sachent comment vous aider.
+Title* : Title*
+Description : Description
+Field*: Domaine*
+SkillToLearn : Que devez-vous apprendre avec cette ressource ?
+SendRequest : Envoyer la demande
+MandatoryInformation : Informations obligatoires
+ComplementaryInformation : Informations complémentaires
+WithThisResourceBeAbleTo : Grâce à cette ressource, vous serez en mesure de
-- 
GitLab


From 70c47106e3ac7a0a74666f9a22f8b030636d3aea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment?= <cpartiot@gmail.com>
Date: Thu, 7 Nov 2019 13:58:11 +0100
Subject: [PATCH 08/13] update: auto select language

---
 .gitignore     |  3 ++-
 www/index.html | 19 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 www/index.html

diff --git a/.gitignore b/.gitignore
index cce175b3..9409f83e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
 /dist/lib/
 /dist/oidc-client-config.json
 *.iml
-/www/
+/www/*
+!/www/index.html
 
 package-lock.json
diff --git a/www/index.html b/www/index.html
new file mode 100644
index 00000000..7dc3c555
--- /dev/null
+++ b/www/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+  </head>
+  <body>
+    <script>
+      const langs = ['fr', 'en'];
+      const defLang = 'en';
+      const userLangs = (navigator.languages || [navigator.language]).map(
+        a => a.split('-')[0],
+      );
+      const selectedLang = userLangs.find(lang => langs.indexOf(lang) !== -1);
+      document.location.replace(selectedLang);
+    </script>
+  </body>
+</html>
-- 
GitLab


From fed6cc960397b0e4fccd32b49aaf3ead9657a758 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment?= <cpartiot@gmail.com>
Date: Thu, 7 Nov 2019 14:29:31 +0100
Subject: [PATCH 09/13] bugfix: use defLang

---
 www/index.html | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/www/index.html b/www/index.html
index 7dc3c555..d2e25159 100644
--- a/www/index.html
+++ b/www/index.html
@@ -10,8 +10,9 @@
       const langs = ['fr', 'en'];
       const defLang = 'en';
       const userLangs = (navigator.languages || [navigator.language]).map(
-        a => a.split('-')[0],
+        a => a.split('-').shift(),
       );
+      userLangs.push(defLang);
       const selectedLang = userLangs.find(lang => langs.indexOf(lang) !== -1);
       document.location.replace(selectedLang);
     </script>
-- 
GitLab


From 9eb8d169a507b49f1df3f22ccdecf9d07c80e91b Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Thu, 7 Nov 2019 16:40:40 +0100
Subject: [PATCH 10/13] Finalize translation.

---
 compile-pug.js                                |  8 +++
 src/includes/account-creation.pug             |  6 +-
 src/includes/entrepreneur/resources/list.pug  | 13 +++--
 .../resources/confirmation-deletion.pug       |  6 +-
 .../resources/confirmation-status-change.pug  |  4 +-
 .../mentor/resources/confirmation.pug         | 10 ++--
 src/includes/mentor/resources/create.pug      | 54 +++++++++---------
 src/includes/mentor/resources/detail.pug      | 33 +++++------
 src/includes/mentor/resources/edit.pug        | 54 +++++++++---------
 src/includes/mentor/resources/list.pug        | 30 +++++-----
 .../resource-report-broken-link-mentor.pug    |  4 +-
 src/includes/mentor/resources/validate.pug    | 55 ++++++++++---------
 src/includes/mentor/validation-process.pug    | 12 ++--
 src/includes/public/resources/detail.pug      | 30 +++++-----
 src/includes/public/resources/list.pug        | 34 ++++++------
 .../resource-report-broken-link-public.pug    |  4 +-
 src/includes/splash.pug                       |  6 +-
 translation/en.yml                            | 42 +++++++++++++-
 translation/fr.yml                            | 40 ++++++++++++++
 www/index.html                                |  5 ++
 20 files changed, 273 insertions(+), 177 deletions(-)

diff --git a/compile-pug.js b/compile-pug.js
index 46671768..4589b01d 100644
--- a/compile-pug.js
+++ b/compile-pug.js
@@ -5,19 +5,25 @@ const yaml = require('js-yaml')
 const pug = require('pug')
 const chokidar = require('chokidar')
 
+//Set default language
 const default_lang = 'en'
 
 const pugFile = './src/index.pug'
+
+//Set the translation directory
 const dataDir = './translation'
 const outDir = './www'
 
+//Compile custom function
 async function compile() {
+  //Retrieve langues proposed
   const langs = (await fs.readdir(dataDir))
     .filter(f => path.extname(f) === '.yml')
     .map(f => path.basename(f, '.yml'))
 
   const langData = {}
 
+  //Retrieve traduction
   await Promise.all(
     langs.map(lang =>
       fs
@@ -40,6 +46,7 @@ async function compile() {
 
   await fs.mkdir(outDir, { recursive: true })
 
+  //Creation of folders by language with their index.html dans wwww
   await Promise.all(
     Object.entries(langData).map(async([lang, data]) => {
       const opt = Object.assign({}, options, { lang, data });
@@ -53,6 +60,7 @@ async function compile() {
   )
 }
 
+// Compile with --watch option
 compile().then(() => {
   if (!process.argv.includes('-w') && !process.argv.includes('--watch')) return
   console.log('watching for changes…')
diff --git a/src/includes/account-creation.pug b/src/includes/account-creation.pug
index a268f923..583340fe 100644
--- a/src/includes/account-creation.pug
+++ b/src/includes/account-creation.pug
@@ -7,21 +7,21 @@ sib-router(default-route='account-creation-index')
     figure(class="logo")
         img(src="../images/logo.png" alt="Coopstarter logo")
 
-    h2.title_lead Welcome to our international index of resources for cooperative mentors and entrepreneurs
+    h2.title_lead=`${data.welcome}`
 
     sib-link.block_log(next='mentor-new-account')
         div
             figure.img_log
                 img(src="../images/mentor.png" 
                 alt="Create your account as mentor")
-            h2.button_base I am a mentor
+            h2.button_base=`${data.IAmMentor}`
 
     sib-link.block_log(next='entrepreneur-new-account')
         div
             figure.img_log
                 img(src="../images/fusee.png" 
                 alt="Create your account as entrepreneur")
-            h2.button_base I am an entrepreneur
+            h2.button_base=`${data.IAmEntrepreneur}`
 
 #mentor-new-account(hidden).no-sidebar.container
     include mentor/profile/create.pug
diff --git a/src/includes/entrepreneur/resources/list.pug b/src/includes/entrepreneur/resources/list.pug
index 3e846b1e..b666e00b 100644
--- a/src/includes/entrepreneur/resources/list.pug
+++ b/src/includes/entrepreneur/resources/list.pug
@@ -115,7 +115,7 @@ container.block_list
                         fields='name'
                         class="accordion active"
         
-                        label-name =`${data.MakeRequest} 1 `
+                        label-name =`${data.Step} 1 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'
@@ -171,7 +171,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name =`${data.MakeRequest} 2 `
+                        label-name =`${data.Step} 2 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'  
@@ -225,7 +225,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name =`${data.MakeRequest} 3 `
+                        label-name =`${data.Step} 3 `
                         label-resources=''
                         
                         widget-name='cs-steps-header'  
@@ -279,7 +279,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name =`${data.MakeRequest} 4 `
+                        label-name =`${data.Step} 4 `
                         label-resources=''
         
                         widget-name='cs-steps-header'
@@ -335,7 +335,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name =`${data.MakeRequest} 5 `
+                        label-name =`${data.Step} 5 `
                         label-resources=''
         
                         widget-name='cs-steps-header'       
@@ -390,7 +390,7 @@ container.block_list
                         fields='name'
                         class="accordion"
         
-                        label-name =`${data.MakeRequest} 6 `
+                        label-name =`${data.Step} 6 `
                         label-resources=''
         
                         widget-name='cs-steps-header'       
@@ -438,3 +438,4 @@ container.block_list
                         paginate-by="5"
                     )
             
+
diff --git a/src/includes/mentor/resources/confirmation-deletion.pug b/src/includes/mentor/resources/confirmation-deletion.pug
index 93cfb47c..17d7e94a 100644
--- a/src/includes/mentor/resources/confirmation-deletion.pug
+++ b/src/includes/mentor/resources/confirmation-deletion.pug
@@ -4,9 +4,9 @@
                     p 
                             i.fas.fa-times
 
-    h2.title_lead_avenir Delete a resource
-    p Are you sure you want to delete this resource ?
+    h2.title_lead_avenir=`${data.DeleteResource}`
+    p=`${data.AreYouSureDelete}`
     sib-delete(
-        data-label="Yes I am sure, delete " 
+        data-label=`${data.YesSureDelete}`
         bind-resources
         ) 
diff --git a/src/includes/mentor/resources/confirmation-status-change.pug b/src/includes/mentor/resources/confirmation-status-change.pug
index b4c9ebf0..27d35a14 100644
--- a/src/includes/mentor/resources/confirmation-status-change.pug
+++ b/src/includes/mentor/resources/confirmation-status-change.pug
@@ -6,13 +6,13 @@ include ../../components/widgets
             p 
                 i.fas.fa-times
 
-    h2.title_lead_avenir Are you sur you want to archive this request ?
+    h2.title_lead_avenir=`${data.AreYouSurArchive}`
 
     sib-form#change_status_request(
         bind-resources
         fields='button(status, name, description, skills, reviewer)'
         value-status = "validated"
         widget-button = "hidden-widget"
-        submit-button = "Archive this request"
+        submit-button =`${data.ArchivethisRequest}`
         next="mentor-resource-list"
     )
diff --git a/src/includes/mentor/resources/confirmation.pug b/src/includes/mentor/resources/confirmation.pug
index 5c2c310e..e0b347a3 100644
--- a/src/includes/mentor/resources/confirmation.pug
+++ b/src/includes/mentor/resources/confirmation.pug
@@ -1,5 +1,5 @@
 div.container_min
-    h2.title_lead.fd_bleu International index of resources for cooperative mentors and entrepreneurs
+    h2.title_lead.fd_bleu=`${data.generalLabel}`
 
 sib-router
   sib-route(name='resource-validation-process-confirmation')
@@ -8,11 +8,11 @@ dialog#resource-validation-process-confirmation.no-sidebar
   include ../validation-process.pug
 
 div.block_list
-  h2.title_lead_avenir Post a resource
+  h2.title_lead_avenir=`${data.PostResource}`
 
-  p.p_entete Thank you for enriching our database !
+  p.p_entete=`${data.ThankYouEnrichingDatabase}`
 
-  p.p_entete Once one of your pair, a fellow mentor, validate your resource, it will be published online and we will send you a notification.
+  p.p_entete=`${data.ThanksMsg}`
 
   div
     p.flex
@@ -20,4 +20,4 @@ div.block_list
 
     div.flex
       h3.button_base
-        sib-link(next='mentor-resource-list') -> Back to dashboard
\ No newline at end of file
+        sib-link(next='mentor-resource-list')=`${data.BackToDashboard}`
\ No newline at end of file
diff --git a/src/includes/mentor/resources/create.pug b/src/includes/mentor/resources/create.pug
index b45c0ea5..ba098a3c 100644
--- a/src/includes/mentor/resources/create.pug
+++ b/src/includes/mentor/resources/create.pug
@@ -1,8 +1,8 @@
 include ../../components/widgets
 
-h2.title_lead_avenir Post a resource
+h2.title_lead_avenir=`${data.PostResource}`
 
-p.p_entete Thank you for enriching our database !
+p.p_entete=`${data.ThankYouEnrichingDatabase}`
 
 .block_log.block_creat_count
     sib-form#resource-creation-form(
@@ -27,33 +27,33 @@ p.p_entete Thank you for enriching our database !
         range-related=`${endpoints.resources}`
         range-country=`${endpoints.countries}`
 
-        label-header_mandatory='Mandatory information'
-        label-header_complementary='Complementary information'
-        label-header_classification='Classification'
-        label-header_access='Access'
-        label-header_related='Related resources'
-
-        label-name='Title*'
-        label-country='Country*'
-        label-language='Language*'
-        label-uri='Location/weblink*'
-        label-format='Format*'
-        label-fields='Field*'
-        label-author='Resource author*'
-        label-publication_year='Year of publication*'
-        label-skills='Learning outcomes, skills*'
-        label-description='Description'
-        label-iframe_link='For videos, report iframe link'
-        label-preview_image='Upload preview image'
-        label-tags='Add tags'
+        label-header_mandatory=`${data.MandatoryInformation}`
+        label-header_complementary=`${data.ComplementaryInformation}`
+        label-header_classification=`${data.Classification}`
+        label-header_access=`${data.Access}`
+        label-header_related=`${data.RelatedResources}`
+
+        label-name=`${data.TitleRequired}`
+        label-country=`${data.Country}`
+        label-language=`${data.Language}`
+        label-uri=`${data.LocationWeblinkReq}`
+        label-format=`${data.FormatReq}`
+        label-fields=`${data.FieldRequired}`
+        label-author=`${data.AuthorReq}`
+        label-publication_year=`${data.DatePublication}`
+        label-skills=`${data.SkillReq}`
+        label-description=`${data.Description}`
+        label-iframe_link=`${data.IframeLink}`
+        label-preview_image=`${data.UploadPreviewImage}`
+        label-tags=`${data.AddTags}`
         
-        label-target='Resource target*'
-        label-type='Type of content*'
-        label-steps='Categorisation*'
+        label-target=`${data.ResourceTargetReq}`
+        label-type=`${data.TypeContentReq}`
+        label-steps=`${data.CategorisationReq}`
 
-        label-sharing='Share with*'
+        label-sharing=`${data.ShareWithReq}`
 
-        label-related='Add a resource'
+        label-related=`${data.AddResource}`
         
         multiple-fields='sib-multiple-select'
         widget-fields='sib-form-auto-completion'
@@ -81,6 +81,6 @@ p.p_entete Thank you for enriching our database !
         widget-preview_image='cs-form-file-custom'
         class-preview_image='input_photo w_25'
 
-        submit-button='Send for validation ->'
+        submit-button=`${data.SendForValidation}`
         next="resource-creation-confirmation"
     )
\ No newline at end of file
diff --git a/src/includes/mentor/resources/detail.pug b/src/includes/mentor/resources/detail.pug
index cf20f6a7..b978db2a 100644
--- a/src/includes/mentor/resources/detail.pug
+++ b/src/includes/mentor/resources/detail.pug
@@ -7,7 +7,8 @@ include ../../components/widgets
         i.fas.fa-times
 
   div#detail-mentor-loader
-    hidden Loading the resource, please wait...
+    hidden
+      i.fas.fa-spinner.fa-spin
 
   sib-display#detail-mentor(
     loader-id="detail-mentor-loader"
@@ -47,30 +48,30 @@ include ../../components/widgets
     class-review.reviewer.name="validator_ressource"
     widget-header_specifications='cs-section_header'
     
-    label-broken='Report broken link'
-    label-sharing='Access:'
-    label-language.name='Language:'
-    label-publication_year='Year of publication:'
-    label-header_specifications='Resource specifications'
+    label-broken=`${data.ReportBrokenLink}`
+    label-sharing=`${data.Access}`
+    label-language.name=`${data.Language}`
+    label-publication_year=`${data.DatePublication}`
+    label-header_specifications=`${data.ResourceSpecifications}`
     label-format.name=''
     
     widget-steps='cs-display-step-property'
     label-steps=''
-    each-label-steps="Step"
+    each-label-steps=`${data.Step}`
     multiple-steps
 
     widget-fields='cs-display-multiple-property'
     label-fields=''
-    each-label-fields='Field:'
+    each-label-fields=`${data.Field}`
     multiple-fields
 
-    label-skills='With this resource, you will be able to:'
-    label-uri='Link to resource'
+    label-skills=`${data.WithThisResourceBeAbleTo}`
+    label-uri=`${data.LinkToResource}`
     name-uri='original-link'
-    label-country='Country:'
-    label-submitter.mentor_profile.organisation.name='Organisation:'
-    label-author='Author :'
-    label-submitter.name='Resource posted by:'
+    label-country=`${data.Country}`
+    label-submitter.mentor_profile.organisation.name=`${data.Organisation}`
+    label-author=`${data.Author}`
+    label-submitter.name=`${data.ResourcePostedBy}`
     action-broken='resource-report-broken-link-mentor'
   )
 
@@ -98,7 +99,7 @@ include ../../components/widgets
     bind-resources
     fields=""
     nested-field="conversations"
-    counter-template="<p>Comments (${counter})</p>"
+    counter-template=`<p>${data.Comments} (${counter})</p>`
   )
 
   sib-conversation(
@@ -106,7 +107,7 @@ include ../../components/widgets
     id-suffix="conversations"
   )
 
-  h2.title_lead_avenir Related resources
+  h2.title_lead_avenir=`${data.RelatedResources}`
 
   sib-display(
     bind-resources,
diff --git a/src/includes/mentor/resources/edit.pug b/src/includes/mentor/resources/edit.pug
index 70fb42a7..739e6cd3 100644
--- a/src/includes/mentor/resources/edit.pug
+++ b/src/includes/mentor/resources/edit.pug
@@ -1,8 +1,8 @@
 include ../../components/widgets
 
-h2.title_lead_avenir Edit this resource
+h2.title_lead_avenir=`${data.EditResource}`
 
-p.p_entete Thank you for enriching our database !
+p.p_entete=`${data.ThankYouEnrichingDatabase}`
 
 .block_log.block_creat_count
     sib-form(
@@ -27,33 +27,33 @@ p.p_entete Thank you for enriching our database !
         range-related=`${endpoints.resources}`
         range-country=`${endpoints.countries}`
 
-        label-header_mandatory='Mandatory information'
-        label-header_complementary='Complementary information'
-        label-header_classification='Classification'
-        label-header_access='Access'
-        label-header_related='Related resources'
-
-        label-name='Title*'
-        label-country='Country*'
-        label-language='Language*'
-        label-uri='Location/weblink*'
-        label-format='Format*'
-        label-field='Field*'
-        label-author='Resource author*'
-        label-publication_year='Year of publication*'
-        label-skills='Learning outcomes, skills*'
-        label-description='Description'
-        label-iframe_link='For videos, report iframe link'
-        label-preview_image='Upload preview image'
-        label-tags='Add tags'
+        label-header_mandatory=`${data.MandatoryInformation}`
+        label-header_complementary=`${data.ComplementaryInformation}`
+        label-header_classification=`${data.Classification}`
+        label-header_access=`${data.Access}`
+        label-header_related=`${data.RelatedResources}`
+
+        label-name=`${data.TitleRequired}`
+        label-country=`${data.Country}`
+        label-language=`${data.Language}`
+        label-uri=`${data.LocationWeblinkReq}`
+        label-format=`${data.FormatReq}`
+        label-fields=`${data.FieldRequired}`
+        label-author=`${data.AuthorReq}`
+        label-publication_year=`${data.DatePublication}`
+        label-skills=`${data.SkillReq}`
+        label-description=`${data.Description}`
+        label-iframe_link=`${data.IframeLink}`
+        label-preview_image=`${data.UploadPreviewImage}`
+        label-tags=`${data.AddTags}`
         
-        label-target='Resource target*'
-        label-type='Type of content*'
-        label-steps='Categorisation*'
+        label-target=`${data.ResourceTargetReq}`
+        label-type=`${data.TypeContentReq}`
+        label-steps=`${data.CategorisationReq}`
 
-        label-sharing='Share with*'
+        label-sharing=`${data.ShareWithReq}`
 
-        label-related='Add a resource'
+        label-related=`${data.AddResource}`
         
         widget-country='sib-form-auto-completion'
 
@@ -82,6 +82,6 @@ p.p_entete Thank you for enriching our database !
         widget-preview_image='cs-form-file-custom'
         class-preview_image='input_photo w_25'
 
-        submit-button='Send for validation ->'
+        submit-button=`${data.SendForValidation}`
         next="resource-creation-confirmation"
     )
\ No newline at end of file
diff --git a/src/includes/mentor/resources/list.pug b/src/includes/mentor/resources/list.pug
index 72cea6cd..82fa17f3 100644
--- a/src/includes/mentor/resources/list.pug
+++ b/src/includes/mentor/resources/list.pug
@@ -15,8 +15,8 @@ dialog#confirm_status_change.no-sidebar
     include ./confirmation-status-change
 
 div.container_min
-    h2.title_lead.fd_bleu International index of resources for cooperative mentors and entrepreneurs
-    button.button_dark.pull-right Watch the presentation
+    h2.title_lead.fd_bleu=`${data.generalLabel}`
+    button.button_dark.pull-right=`${data.WatchThePresentation}`
         i.far.fa-play-circle
 
 div.block_list
@@ -24,19 +24,19 @@ div.block_list
         div.resources__newresource
             sib-link(next='mentor-resource-create')
                 div
-                div.button_base.ico_gauche.ico_plus Post a new Resource
+                div.button_base.ico_gauche.ico_plus=`${data.PostResource}`
 
         div.dashboard__database
             sib-link(next='mentor-database')
-                div.button_base.ico_gauche.ico_database Browse database
+                div.button_base.ico_gauche.ico_database=`${data.BrowseDatabase}`
 
     div.tabs
         div(class='tablink', onclick="openTab('reviews', this)")
-            h2 Resources requesting validation
+            h2=`${data.ResourcesRequestingValidation}`
         div(class='tablink', onclick="openTab('requests', this)")
-            h2 Requested resources
+            h2=`${data.RequestedResources}`
         div(class='tablink', onclick="openTab('history', this)", id='defaultOpen')
-            h2 History of your resources
+            h2=`${data.HistoryResources}`
         
         div.block_log.block_list
             
@@ -109,7 +109,7 @@ div.block_list
                     search-range-fields=`${endpoints.fields}`
                     search-range-country=`${endpoints.countries}`
 
-                    search-label-search_for_a_resource="Search by name..."
+                    search-label-search_for_a_resource=`${data.SearchByNam}`
                     search-widget-search_for_a_resource="sib-form-placeholder-text"
                     widget-search_for_a_resource="hidden-widget"
 
@@ -127,22 +127,22 @@ div.block_list
                     search-widget-header_criterias="cs-section_header"
                     search-label-header_criterias="More criterias"
 
-                    search-label-format='Format'
-                    search-label-publication_year='Year of publication'
-                    search-label-country='Country of publication'
-                    search-label-language='Language'
-                    search-label-fields='Field'
+                    search-label-format=`${data.Format}`
+                    search-label-publication_year=`${data.DatePublication}`
+                    search-label-country=`${data.CountryPublication}`
+                    search-label-language=`${data.Language}`
+                    search-label-fields=`${data.Field}`
 
                     class-name="tit_element_list"
          
                     widget-format.name='cs-display-resource-property'
-                    label-format.name='Format:'
+                    label-format.name=`${data.Format}`
                     class-format.name="contenu_list"
                     
                     class-publication_year="contenu_list"
 
                     widget-publication_year='cs-display-resource-property'
-                    label-publication_year='Date of publication:'
+                    label-publication_year=`${data.DatePublication}`
 
                     class-content='content__left'
                     class-actions='actions__right'
diff --git a/src/includes/mentor/resources/resource-report-broken-link-mentor.pug b/src/includes/mentor/resources/resource-report-broken-link-mentor.pug
index b2f1207b..b41423b9 100644
--- a/src/includes/mentor/resources/resource-report-broken-link-mentor.pug
+++ b/src/includes/mentor/resources/resource-report-broken-link-mentor.pug
@@ -4,8 +4,8 @@
                 p 
                     i.fas.fa-times
 
-    h2.title_lead_avenir Thanks!
-    p The submitter of the resource will be advised that this link is broken.
+    h2.title_lead_avenir=`${data.Thanks}`
+    p=`${data.ConfirmSendBrokenLink}`
     sib-form#report-broken-link-mentor(
         data-src=`${endpoints.brokenlinks}`
         fields = "resource, submitter"
diff --git a/src/includes/mentor/resources/validate.pug b/src/includes/mentor/resources/validate.pug
index 3b1fee99..ce160a32 100644
--- a/src/includes/mentor/resources/validate.pug
+++ b/src/includes/mentor/resources/validate.pug
@@ -12,7 +12,8 @@ sib-router
         i.fas.fa-times
   
   div#detail-validation-loader
-    hidden Loading the resource, please wait...
+    hidden
+      i.fas.fa-spinner.fa-spin
  
   sib-display(
     loader-id="detail-validation-loader"
@@ -48,30 +49,30 @@ sib-router
     widget-preview_image='cs-preview-picture'
     widget-header_specifications='cs-section_header'
     
-    label-broken='Report broken link'
-    label-sharing='Access:'
-    label-language.name='Language:'
-    label-publication_year='Year of publication:'
-    label-header_specifications='Resource specifications'
+    label-broken=`${data.ReportBrokenLink}`
+    label-sharing=`${data.Access}`
+    label-language.name=`${data.Language}`
+    label-publication_year=`${data.DatePublication}`
+    label-header_specifications=`${data.ResourceSpecifications}`
     label-format.name=''
     
     widget-steps='cs-display-step-property'
     label-steps=''
-    each-label-steps="Step"
+    each-label-steps=`${data.Step}`
     multiple-steps
 
     widget-fields='cs-display-multiple-property'
     label-fields=''
-    each-label-fields='Field:'
+    each-label-fields=`${data.Field}`
     multiple-fields
 
-    label-skills='With this resource, you will be able to:'
-    label-uri='Link to resource'
+    label-skills=`${data.WithResourceAbleTo}`
+    label-uri=`${data.LinkToResource}`
     name-uri='original-link'
-    label-country.name='Country:'
-    label-submitter.mentor_profile.organisation.name='Organisation:'
-    label-author='Author :'
-    label-submitter.name='Resource posted by:'
+    label-country.name=`${data.Country}`
+    label-submitter.mentor_profile.organisation.name=`${data.Organisation}`
+    label-author=`${data.Author}`
+    label-submitter.name=`${data.ResourcePostedBy}`
     action-broken='resource-report-broken-link-mentor'
   )
 
@@ -81,7 +82,7 @@ sib-router
       fields='improve'
 
       widget-improve='sib-action'
-      label-improve='Require improvement'
+      label-improve=`${data.RequireImprovement}`
       action-improve='improvement-dialog'
       class-improve='button_base'
     )
@@ -92,7 +93,7 @@ sib-router
       fields='refuse'
 
       widget-refuse='sib-action'
-      label-refuse='Report as inappropriate'
+      label-refuse=`${data.ReportInappropriate}`
       action-refuse='refusal-dialog'
       class-refuse='button_base'
     )
@@ -104,45 +105,45 @@ sib-router
     widget-reviewer='sib-form-hidden'
     widget-status='sib-form-hidden'
     value-status='validated'
-    submit-button='Validate'
+    submit-button=`${data.Validate}`
     next='review-submission-confirmation'
   )
 
   dialog#refusal-dialog
-    h2.title_lead Report as inappropriate
+    h2.title_lead=`${data.ReportInappropriate}` 
     sib-form#refusal-dialog-form(
       bind-resources
       nested-field='review'
       fields='comment, status, reviewer',
 
-      label-comment='Explain reasons of refusal*'
+      label-comment=`${data.ExplainReasonsRefusal}`
       widget-comment='sib-form-textarea'
       widget-reviewer='sib-form-hidden'
       widget-status='sib-form-hidden'
       value-status='inappropriate'
-      submit-button='Send ->'
+      submit-button=`${data.Send}`
       next='review-submission-confirmation'
     )
 
   dialog#improvement-dialog
-    h2.title_lead Suggest improvement
+    h2.title_lead=`${data.SuggestImprovement}`
     sib-form#improvement-dialog-form(
       bind-resources
       nested-field='review'
       fields='comment, status, reviewer',
 
-      label-comment='Explain improvement required*'
+      label-comment=`${data.ExplainImprovementRequired}`
       widget-reviewer='sib-form-hidden'
       widget-comment='sib-form-textarea'
       widget-status='sib-form-hidden'
       value-status='to_improve'
-      submit-button='Send ->'
+      submit-button=`${data.Send}`
       next='review-submission-confirmation'
     )
 
   dialog#review-submission-confirmation
-    h2.title_lead_avenir Thanks for your review
-    p.flex The submitter of the resource will now receive a notification of your review.
-    p.flex He will then be able to patch and send back the resource to validation
+    h2.title_lead_avenir=`${data.ThanksForReview}` 
+    p.flex=`${data.SubmitterWillReceiveReview}` 
+    p.flex=`${data.HeWillPatch}` 
     p.flex
-      sib-link(next='mentor-resource-list', class='button_base') Back to dashboard
\ No newline at end of file
+      sib-link(next='mentor-resource-list', class='button_base')=`${data.BackToDashboard}`
\ No newline at end of file
diff --git a/src/includes/mentor/validation-process.pug b/src/includes/mentor/validation-process.pug
index 64b2a5f9..008fb788 100644
--- a/src/includes/mentor/validation-process.pug
+++ b/src/includes/mentor/validation-process.pug
@@ -2,30 +2,30 @@ div.block_log.block_creat_count.no_shadow
     sib-link(class="backlink", next="mentor-resource-list")
         i.fas.fa-times
     div#validation-process
-        h2 What is a validation process ?
+        h2=`${data.WhatValidationProcess}`
         div.flex.w_100
             figure.w_50
                 img( src="../images/valid_1.png"
                 alt="")
-                figcaption.w_75 Mentor upload a resource to the database
+                figcaption.w_75=`${data.MentorUploadResourceToDatabase}`
 
             figure.w_50
                 img( src="../images/valid_2.png"
                 alt="")
-                figcaption.w_75 Resource is sent to qualified peers for validation
+                figcaption.w_75=`${data.ResourceSentToQualifiedPeersForValidation}`
               
             figure.w_33
                 img( src="../images/valid_3.png"
                 alt="")
-                figcaption.w_75 Resource is validated and becomes available in the database
+                figcaption.w_75=`${data.ResourceBecomesAvailableInDatabase}`
             
             figure.w_33
                 img( src="../images/valid_4.png"
                 alt="")
-                figcaption.w_75 Resource is not validated and improvement is siggested. You get a list of improvement, can edit ans re-load the resource. It goes to validation process again.L0
+                figcaption.w_75=`${data.ResourceIsNotValidated}`
             
             figure.w_33
                 img( src="../images/valid_5.png"
                 alt="")
-                figcaption.w_75 Resource is reported inapropriate. You get a notification with a message from your peer explaning why.
+                figcaption.w_75=`${data.ResourceReportedInapropriate}`
         
\ No newline at end of file
diff --git a/src/includes/public/resources/detail.pug b/src/includes/public/resources/detail.pug
index 84d387e0..5d143464 100644
--- a/src/includes/public/resources/detail.pug
+++ b/src/includes/public/resources/detail.pug
@@ -47,31 +47,31 @@ include ../../components/widgets
     class-review.reviewer.name="validator_ressource"
     widget-header_specifications='cs-section_header'
     
-    label-broken='Report broken link'
-    label-sharing='Access:'
-    label-language.name='Language:'
-    label-publication_year='Year of publication:'
-    label-header_specifications='Resource specifications'
+    label-broken=`${data.ReportBrokenLink}`
+    label-sharing=`${data.Access}`
+    label-language.name=`${data.Language}`
+    label-publication_year=`${data.DatePublication}`
+    label-header_specifications=`${data.ResourceSpecifications}`
     label-format.name=''
     class-format.name='format_type'
 
     widget-steps='cs-display-step-property'
     label-steps=''
-    each-label-steps="Step"
+    each-label-steps=`${data.Step}`
     multiple-steps
 
     widget-fields='cs-display-multiple-property'
     label-fields=''
-    each-label-fields='Field:'
+    each-label-fields=`${data.Field}`
     multiple-fields
 
-    label-skills='With this resource, you will be able to:'
-    label-uri='Link to resource'
+    label-skills=`${data.WithThisResourceBeAbleTo}`
+    label-uri=`${data.LinkToResource}`
     name-uri='original-link'
-    label-country.name='Country:'
-    label-submitter.mentor_profile.organisation.name='Organisation:'
-    label-author='Author :'
-    label-submitter.name='Resource posted by:'
+    label-country=`${data.Country}`
+    label-submitter.mentor_profile.organisation.name=`${data.Organisation}`
+    label-author=`${data.Author}`
+    label-submitter.name=`${data.ResourcePostedBy}`
     action-broken='resource-report-broken-link-public'
   )
 
@@ -99,7 +99,7 @@ include ../../components/widgets
     bind-resources
     fields=""
     nested-field="conversations"
-    counter-template="<p>Comments (${counter})</p>"
+    counter-template=`<p>${data.Comments} (${counter})</p>`
   )
 
   sib-conversation(
@@ -107,7 +107,7 @@ include ../../components/widgets
     id-suffix="conversations"
   )
 
-  h2.title_lead_avenir Related resources
+  h2.title_lead_avenir=`${data.RelatedResources}`
 
   sib-display(
     bind-resources,
diff --git a/src/includes/public/resources/list.pug b/src/includes/public/resources/list.pug
index 4bcbb62b..c8251099 100644
--- a/src/includes/public/resources/list.pug
+++ b/src/includes/public/resources/list.pug
@@ -7,14 +7,14 @@ dialog#resource-report-broken-link-public
     include ./resource-report-broken-link-public
 
 div.container_min
-        h2.title_lead.fd_bleu International index of resources for cooperative mentors and entrepreneurs
-        button.button_dark.pull-right Watch the presentation
+        h2.title_lead.fd_bleu=`${data.generalLabel}`
+        button.button_dark.pull-right=`${data.WatchThePresentation}`
             i.far.fa-play-circle
 
 container.block_list.flex.flex_espace
     div.w_75.block-g-entre
         div
-            h2.title_form Search for a resource
+            h2.title_form=`${data.SearchForResource}`
             div#public-resources-loader
                 hidden
                     i.fas.fa-spinner.fa-spin
@@ -22,14 +22,14 @@ container.block_list.flex.flex_espace
                 data-src=`${endpoints.resources}`,
                 loader-id="public-resources-loader"
                 fields='keyword(name_keyword)'    
-                label-name_keyword="Search by name..."
+                label-name_keyword=`${data.SearchByNam}`
                 widget-name_keyword="sib-form-placeholder-text"
 
                 naked    
             )
 
             div.keyword_submit.button__actions
-                div.button_base.ico_gauche Search
+                div.button_base.ico_gauche=`${data.Search}`
             
             sib-form.instance_database_only(
                 data-src=`${endpoints.resources}`,
@@ -42,12 +42,12 @@ container.block_list.flex.flex_espace
         sib-form.more_criterias.flex.flex_espace(
             data-src=`${endpoints.resources}`,
             fields='header_criterias, format, publication_year, country, language, fields'
-            label-header_criterias='More criterias'
-            label-format='Format:'
-            label-publication_year='Year of publication'
-            label-country='Country of publication'
-            label-language='Language'
-            label-fields='Field'
+            label-header_criterias=`${data.Search}`
+            label-format=`${data.Format}`
+            label-publication_year=`${data.DatePublication}`
+            label-country=`${data.CountryPublication}`
+            label-language=`${data.Language}`
+            label-fields=`${data.Field}`
             widget-header_criterias='cs-section_header'
 
             range-language=`${endpoints.languages}`
@@ -100,7 +100,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion active"
 
-                    label-name ='Step 1 '
+                    label-name =`${data.Step} 1 `
                     label-resources=''
                     
                     widget-name='cs-steps-header'
@@ -156,7 +156,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 2 '
+                    label-name =`${data.Step} 2 `
                     label-resources=''
                     
                     widget-name='cs-steps-header'  
@@ -212,7 +212,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 3 '
+                    label-name =`${data.Step} 3 `
                     label-resources=''
                     
                     widget-name='cs-steps-header'   
@@ -268,7 +268,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 4 '
+                    label-name =`${data.Step} 4 `
                     label-resources=''
 
                     widget-name='cs-steps-header'
@@ -325,7 +325,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
 
-                    label-name ='Step 5 '
+                    label-name =`${data.Step} 5 `
                     label-resources=''
 
                     widget-name='cs-steps-header'       
@@ -380,7 +380,7 @@ container.block_list.flex.flex_espace
                     fields='name'
                     class="accordion"
     
-                    label-name ='Step 6 '
+                    label-name =`${data.Step} 6 `
                     label-resources=''
     
                     widget-name='cs-steps-header'       
diff --git a/src/includes/public/resources/resource-report-broken-link-public.pug b/src/includes/public/resources/resource-report-broken-link-public.pug
index b2ffd753..8b7f94fb 100644
--- a/src/includes/public/resources/resource-report-broken-link-public.pug
+++ b/src/includes/public/resources/resource-report-broken-link-public.pug
@@ -4,8 +4,8 @@
                 p 
                     i.fas.fa-times
 
-    h2.title_lead_avenir Thanks!
-    p The submitter of the resource will be advised that this link is broken.
+    h2.title_lead_avenir=`${data.Thanks}`
+    p=`${data.ConfirmSendBrokenLink}`
     sib-form#report-broken-link-public(
         data-src=`${endpoints.brokenlinks}`
         fields = "resource, submitter"
diff --git a/src/includes/splash.pug b/src/includes/splash.pug
index bc841a1a..b7546515 100644
--- a/src/includes/splash.pug
+++ b/src/includes/splash.pug
@@ -4,7 +4,7 @@ sib-router(default-route='splash-index')
 figure(class="logo")
     img(src="../images/logo.png" alt="Coopstarter logo")
 
-h2.title_lead Welcome to our international index of resources for cooperative mentors and entrepreneurs
+h2.title_lead=`${data.welcome}`
 
 #splash-index(hidden).no-sidebar.block_log.flex
     figure.img_log
@@ -12,9 +12,9 @@ h2.title_lead Welcome to our international index of resources for cooperative me
             alt="Connect as mentor")
 
     cs-login(bind-user)
-        button#mentor_login.button_base Connect to the knowledge base
+        button#mentor_login.button_base=`${data.ConnectKnowledgeBase}`
     
     sib-link(next='public-dashboard')
-        button#public-acces.button_base Access without registration
+        button#public-acces.button_base=`${data.AccessWithoutRegistration}`
     
     
\ No newline at end of file
diff --git a/translation/en.yml b/translation/en.yml
index 5da96e01..22341ac9 100644
--- a/translation/en.yml
+++ b/translation/en.yml
@@ -74,4 +74,44 @@ CantFindRessourceYouNeed : Can't find the ressource you need ?
 MakeRequest: Make a request
 Thanks :  Thanks!
 ConfirmSendBrokenLink : The submitter of the resource will be advised that this link is broken.
-YouRequestHasBeenSubmitted : Your request has been submitted
\ No newline at end of file
+YouRequestHasBeenSubmitted : Your request has been submitted
+WhatValidationProcess : What is a validation process ?
+MentorUploadResourceToDatabase: Mentor upload a resource to the database
+ResourceSentToQualifiedPeersForValidation : Resource is sent to qualified peers for validation
+ResourceBecomesAvailableInDatabase: Resource is validated and becomes available in the database
+ResourceIsNotValidated: Resource is not validated and improvement is siggested. You get a list of improvement, can edit ans re-load the resource. It goes to validation process again.
+ResourceReportedInapropriate: Resource is reported inapropriate. You get a notification with a message from your peer explaning why.
+DeleteResource: Delete a resource
+AreYouSureDelete: Are you sure you want to delete this resource ?
+YesSureDelete : Yes I am sure, delete
+AreYouSurArchive:  Are you sur you want to archive this request ?
+ArchivethisRequest: Archive this request
+ThankYouEnrichingDatabase : Thank you for enriching our database !
+ThanksMsg: Once one of your pair, a fellow mentor, validate your resource, it will be published online and we will send you a notification.
+Classification : Classification
+FormatReq: Format*
+LocationWeblinkReq: Location/weblink*
+AuthorReq : Resource author*
+SkillReq : Learning outcomes, skills*
+IframeLink: For videos, report iframe link
+UploadPreviewImage: Upload preview image
+AddTags: Add tags
+ResourceTargetReq: Resource target*
+TypeContentReq: Type of content*
+CategorisationReq: Categorisation*
+ShareWithReq: Share with*
+AddResource: Add a resource
+SendForValidation : Send for validation -> 
+EditResource : Edit this resource
+RequireImprovement: Require improvement
+ReportInappropriate: Report as inappropriate
+Validate: Validate
+Send: Send ->
+SuggestImprovement: Suggest improvement
+ExplainImprovementRequired: Explain improvement required*
+ThanksForReview:  Thanks for your review
+SubmitterWillReceiveReview.: The submitter of the resource will now receive a notification of your review.
+HeWillPatch : He will then be able to patch and send back the resource to validation
+ExplainReasonsRefusal: Explain reasons of refusal*
+IAmMentor: I am a mentor
+IAmEntrepreneur: I am an entrepreneur
\ No newline at end of file
diff --git a/translation/fr.yml b/translation/fr.yml
index f0da9672..7ac847be 100644
--- a/translation/fr.yml
+++ b/translation/fr.yml
@@ -68,3 +68,43 @@ SendRequest : Envoyer la demande
 MandatoryInformation : Informations obligatoires
 ComplementaryInformation : Informations complémentaires
 WithThisResourceBeAbleTo : Grâce à cette ressource, vous serez en mesure de
+WhatValidationProcess : Qu'est-ce qu'un processus de validation ?
+MentorUploadResourceToDatabase: Le mentor télécharge une ressource dans la base de données
+ResourceSentToQualifiedPeersForValidation : La ressource est envoyée à des pairs qualifiés pour validation.
+ResourceBecomesAvailableInDatabase:  La ressource est validée et devient disponible dans la base de données
+ResourceIsNotValidated: La ressource n'est pas validée et l'amélioration est signalée. Vous obtenez une liste des améliorations, vous pouvez modifier et recharger la ressource. Il est de nouveau soumis au processus de validation.
+ResourceReportedInapropriate: La ressource est jugée inadéquate. Vous recevez une notification avec un message de votre pair vous expliquant pourquoi.
+DeleteResource: Supprimer une ressource
+AreYouSureDelete: Êtes-vous sûr de vouloir supprimer cette ressource ?
+YesSureDelete : Oui, j'en suis sûr, supprimer
+AreYouSurArchive:  Êtes-vous sur de vouloir archiver cette demande ?
+ArchivethisRequest: Archiver cette demande
+ThankYouEnrichingDatabase : Merci d'enrichir notre base de données !
+ThanksMsg: Une fois que l'un de vos pairs, un collègue mentor, aura validé votre ressource, elle sera publiée en ligne et nous vous enverrons un avis.
+Classification : Classification
+FormatReq: Format*
+LocationWeblinkReq: Location/weblink*
+AuthorReq : Auteur de la ressource*
+SkillReq : Résultats d'apprentissage, compétences*
+IframeLink: Pour les vidéos, signalez le lien iframe
+UploadPreviewImage: Télécharger l'image de prévisualisation
+AddTags: Ajouter des tags
+ResourceTargetReq : Cible en matière de ressources*
+TypeContentReq: Type de contenu*
+CategorisationReq: Categorisation*
+ShareWithReq: Partager avec*
+AddResource: Ajouter une ressource
+SendForValidation : Envoyer pour validation -> 
+EditResource : Modifier cette ressource
+RequireImprovement: Besoin d'amélioration
+ReportInappropriate: Signaler comme inapproprié
+Validate: Valider
+Send: Envoyer ->
+SuggestImprovement: Suggérer des améliorations
+ExplainImprovementRequired: Expliquez les améliorations nécessaires*.
+ThanksForReview:  Merci pour votre avis
+SubmitterWillReceiveReview.: L'auteur de la ressource recevra maintenant un avis de votre examen.
+HeWillPatch : Il pourra alors corriger et renvoyer la ressource à la validation.
+ExplainReasonsRefusal: Expliquez les raisons du refus*.
+IAmMentor: Je suis un mentor
+IAmEntrepreneur: je suis un entrepreneur
diff --git a/www/index.html b/www/index.html
index d2e25159..df0e7f8e 100644
--- a/www/index.html
+++ b/www/index.html
@@ -7,13 +7,18 @@
   </head>
   <body>
     <script>
+      //Language given in translation
       const langs = ['fr', 'en'];
       const defLang = 'en';
+
+      //Get the favorite language of the user's navigator
       const userLangs = (navigator.languages || [navigator.language]).map(
         a => a.split('-').shift(),
       );
       userLangs.push(defLang);
       const selectedLang = userLangs.find(lang => langs.indexOf(lang) !== -1);
+
+      //Redirection to the appropriate index.html
       document.location.replace(selectedLang);
     </script>
   </body>
-- 
GitLab


From 2d617c2626e1a91d5734df7ee2f308ed3ff19158 Mon Sep 17 00:00:00 2001
From: Benoit Alessandroni <benoit@happy-dev.fr>
Date: Tue, 12 Nov 2019 16:44:26 +0100
Subject: [PATCH 11/13] Removing useless info the from mento dahsboard header

---
 src/includes/mentor/components/header.pug | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index b4afb121..b9f62c26 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -16,8 +16,6 @@
                 label-languages=''
                 naked
             )
-            h1= data.title
-            h2 hello
             .dropdownWrapper
                 sib-display#mentor-account-picture.dropdownLabel(
                     bind-user
-- 
GitLab


From 909d1cba1df76bcbd588e8347ca8c3d1925c7ed6 Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Wed, 13 Nov 2019 12:23:13 +0100
Subject: [PATCH 12/13] language selector works.

---
 src/includes/mentor/components/header.pug |  4 ++++
 src/scripts/coopstarter.js                | 19 ++++++++++++++-----
 translation/en.yml                        |  1 -
 translation/fr.yml                        |  2 +-
 4 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index b9f62c26..363919fb 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -16,6 +16,10 @@
                 label-languages=''
                 naked
             )
+<<<<<<< HEAD
+=======
+
+>>>>>>> language selector works.
             .dropdownWrapper
                 sib-display#mentor-account-picture.dropdownLabel(
                     bind-user
diff --git a/src/scripts/coopstarter.js b/src/scripts/coopstarter.js
index 675b9d71..bed5c99e 100644
--- a/src/scripts/coopstarter.js
+++ b/src/scripts/coopstarter.js
@@ -333,14 +333,23 @@ function manageSelectLanguage() {
   const languageSelects = document.getElementsByClassName("languageChoice")
   for (let item of languageSelects) {
     item.addEventListener("change", function() {
+      //We listen the selected option for the language
       uriLanguge = item.querySelector("option:checked").value
-      document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22fr%22%7D"
+
+      //We retrieve element of the url
+      var pathAfterThePrefix = window.location.pathname.split('/')[2];
+      var base_url = location.host
+
+      //If the selected language is french
       if (uriLanguge === '{"@id": "http://localhost:8000/languages/1/"}') {
-        document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22fr%22%7D"
-        location.reload()
+        //Redirection with the appropriate prefixe.
+        var redirect = "http://"+base_url+'/fr/'+pathAfterThePrefix
+
+        document.location.href = redirect
       } else {
-        document.cookie = "langData=j%3A%7B%22langIndice%22%3A%22en%22%7D"
-        location.reload()
+        var redirect = "http://"+base_url+'/en/'+pathAfterThePrefix
+        document.location.href = redirect
+        
       }
       
     })
diff --git a/translation/en.yml b/translation/en.yml
index 22341ac9..474b04d2 100644
--- a/translation/en.yml
+++ b/translation/en.yml
@@ -1,5 +1,4 @@
 ---
-title: My amazing website
 Dashboard : Dashboard
 ResourcesDatabase : Resources database
 MyAccount : My account
diff --git a/translation/fr.yml b/translation/fr.yml
index 7ac847be..2e78a588 100644
--- a/translation/fr.yml
+++ b/translation/fr.yml
@@ -1,5 +1,4 @@
 ---
-title: mon super sit
 Dashboard : Tableau de board
 ResourcesDatabase : Base de donnée de ressource
 MyAccount : Mon compte
@@ -68,6 +67,7 @@ SendRequest : Envoyer la demande
 MandatoryInformation : Informations obligatoires
 ComplementaryInformation : Informations complémentaires
 WithThisResourceBeAbleTo : Grâce à cette ressource, vous serez en mesure de
+WatchThePresentation : Regarder la présentation
 WhatValidationProcess : Qu'est-ce qu'un processus de validation ?
 MentorUploadResourceToDatabase: Le mentor télécharge une ressource dans la base de données
 ResourceSentToQualifiedPeersForValidation : La ressource est envoyée à des pairs qualifiés pour validation.
-- 
GitLab


From a1f5b2c3314c4a4fec7c827dcb72da48a2405b2d Mon Sep 17 00:00:00 2001
From: Alice <alice.poggioli@hotmail.fr>
Date: Wed, 13 Nov 2019 12:33:38 +0100
Subject: [PATCH 13/13] forgotten file

---
 src/includes/mentor/components/header.pug | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/src/includes/mentor/components/header.pug b/src/includes/mentor/components/header.pug
index 363919fb..b9f62c26 100644
--- a/src/includes/mentor/components/header.pug
+++ b/src/includes/mentor/components/header.pug
@@ -16,10 +16,6 @@
                 label-languages=''
                 naked
             )
-<<<<<<< HEAD
-=======
-
->>>>>>> language selector works.
             .dropdownWrapper
                 sib-display#mentor-account-picture.dropdownLabel(
                     bind-user
-- 
GitLab