From 35dda16adb434bba23415ebc748bed4254e08fec Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Mon, 16 Apr 2018 22:54:36 +0200
Subject: [PATCH] Compile and bundle translations in CI

---
 .gitignore          |  2 ++
 .gitlab-ci.yml      |  2 ++
 front/build/i18n.js | 12 +++++++++++-
 front/package.json  |  3 ++-
 po/.gitkeep         |  0
 5 files changed, 17 insertions(+), 2 deletions(-)
 create mode 100644 po/.gitkeep

diff --git a/.gitignore b/.gitignore
index ee2ed95e25..548cfd7b37 100644
--- a/.gitignore
+++ b/.gitignore
@@ -87,3 +87,5 @@ docs/_build
 
 data/
 .env
+
+po/*.po
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 94b40bed3b..217047794b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -68,6 +68,8 @@ build_front:
 
   script:
     - yarn install
+    - yarn run i18n-extract
+    - yarn run i18n-compile
     - yarn run build
   cache:
     key: "$CI_PROJECT_ID__front_dependencies"
diff --git a/front/build/i18n.js b/front/build/i18n.js
index 8739d06d2f..ef31070c7d 100644
--- a/front/build/i18n.js
+++ b/front/build/i18n.js
@@ -29,6 +29,17 @@ fs.readdir(poDir, (err, files) => {
                             console.log(err)
                         } else {
                             console.log(`Wrote translation file: ${output}`)
+                            if (lang === 'en') {
+                                // for english, we need to specify that json values are equal to the keys.
+                                // otherwise we end up with empty strings on the front end for english
+                                var contents = fs.readFileSync(output)
+                                var jsonContent = JSON.parse(contents)
+                                var finalContent = {}
+                                Object.keys(jsonContent).forEach(function(key) {
+                                    finalContent[key] = key
+                                })
+                                fs.writeFile(output, JSON.stringify(finalContent))
+                            }
                         }
                     })
                 })
@@ -36,4 +47,3 @@ fs.readdir(poDir, (err, files) => {
         }
     }
 })
-
diff --git a/front/package.json b/front/package.json
index 02fffe45e6..8844e8bee5 100644
--- a/front/package.json
+++ b/front/package.json
@@ -8,7 +8,8 @@
     "dev": "node build/dev-server.js",
     "start": "node build/dev-server.js",
     "build": "node build/build.js",
-    "i18n-extract": "find src/ -name '*.vue' | xargs vendor/vue-i18n-xgettext/index.js",
+    "i18n-extract": "find src/ -name '*.vue' | xargs vendor/vue-i18n-xgettext/index.js > ../po/en.po",
+    "i18n-compile": "node build/i18n.js",
     "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
     "unit-watch": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js",
     "e2e": "node test/e2e/runner.js",
diff --git a/po/.gitkeep b/po/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
-- 
GitLab