diff --git a/external/importL10n/.eslintrc b/external/importL10n/.eslintrc
new file mode 100644
index 000000000..4a0b538f6
--- /dev/null
+++ b/external/importL10n/.eslintrc
@@ -0,0 +1,10 @@
+{
+  "extends": [
+    "../.eslintrc"
+  ],
+
+  "rules": {
+    // ECMAScript 6
+    "no-var": "error",
+  },
+}
diff --git a/external/importL10n/locales.js b/external/importL10n/locales.js
index a54d19d54..bc10a284e 100644
--- a/external/importL10n/locales.js
+++ b/external/importL10n/locales.js
@@ -15,16 +15,16 @@
 
 "use strict";
 
-var fs = require("fs");
-var https = require("https");
-var path = require("path");
+const fs = require("fs");
+const https = require("https");
+const path = require("path");
 
 // Fetches all languages that have an *active* translation in mozilla-central.
 // This is used in gulpfile.js for the `importl10n` command.
 
-var DEFAULT_LOCALE = "en-US";
+const DEFAULT_LOCALE = "en-US";
 
-var EXCLUDE_LANG_CODES = ["ca-valencia", "ja-JP-mac"];
+const EXCLUDE_LANG_CODES = ["ca-valencia", "ja-JP-mac"];
 
 function normalizeText(s) {
   return s.replace(/\r\n?/g, "\n").replace(/\uFEFF/g, "");
@@ -33,23 +33,23 @@ function normalizeText(s) {
 function downloadLanguageCodes() {
   console.log("Downloading language codes...\n");
 
-  var ALL_LOCALES =
+  const ALL_LOCALES =
     "https://hg.mozilla.org/mozilla-central/raw-file/tip/browser/locales/all-locales";
 
   return new Promise(function (resolve) {
     https.get(ALL_LOCALES, function (response) {
       if (response.statusCode === 200) {
-        var content = "";
+        let content = "";
         response.setEncoding("utf8");
         response.on("data", function (chunk) {
           content += chunk;
         });
         response.on("end", function () {
           content = content.trim(); // Remove any leading/trailing white-space.
-          var langCodes = normalizeText(content).split("\n");
+          const langCodes = normalizeText(content).split("\n");
           // Remove all locales that we don't want to download below.
-          for (var langCode of [DEFAULT_LOCALE, ...EXCLUDE_LANG_CODES]) {
-            var i = langCodes.indexOf(langCode);
+          for (const langCode of [DEFAULT_LOCALE, ...EXCLUDE_LANG_CODES]) {
+            const i = langCodes.indexOf(langCode);
             if (i > -1) {
               langCodes.splice(i, 1);
             }
@@ -68,14 +68,14 @@ function downloadLanguageFiles(root, langCode) {
 
   // Constants for constructing the URLs. Translations are taken from the
   // Nightly channel as those are the most recent ones.
-  var MOZ_CENTRAL_ROOT = "https://hg.mozilla.org/l10n-central/";
-  var MOZ_CENTRAL_PDFJS_DIR = "/raw-file/default/browser/pdfviewer/";
+  const MOZ_CENTRAL_ROOT = "https://hg.mozilla.org/l10n-central/";
+  const MOZ_CENTRAL_PDFJS_DIR = "/raw-file/default/browser/pdfviewer/";
 
   // Defines which files to download for each language.
-  var files = ["viewer.properties"];
-  var downloadsLeft = files.length;
+  const files = ["viewer.properties"];
+  let downloadsLeft = files.length;
 
-  var outputDir = path.join(root, langCode);
+  const outputDir = path.join(root, langCode);
   if (!fs.existsSync(outputDir)) {
     fs.mkdirSync(outputDir);
   }
@@ -83,14 +83,15 @@ function downloadLanguageFiles(root, langCode) {
   return new Promise(function (resolve) {
     // Download the necessary files for this language.
     files.forEach(function (fileName) {
-      var outputPath = path.join(outputDir, fileName);
-      var url = MOZ_CENTRAL_ROOT + langCode + MOZ_CENTRAL_PDFJS_DIR + fileName;
+      const outputPath = path.join(outputDir, fileName);
+      const url =
+        MOZ_CENTRAL_ROOT + langCode + MOZ_CENTRAL_PDFJS_DIR + fileName;
 
       https.get(url, function (response) {
         // Not all files exist for each language. Files without translations
         // have been removed (https://bugzilla.mozilla.org/show_bug.cgi?id=1443175).
         if (response.statusCode === 200) {
-          var content = "";
+          let content = "";
           response.setEncoding("utf8");
           response.on("data", function (chunk) {
             content += chunk;
@@ -112,18 +113,18 @@ function downloadLanguageFiles(root, langCode) {
 }
 
 async function downloadL10n(root, callback) {
-  var langCodes = await downloadLanguageCodes();
+  const langCodes = await downloadLanguageCodes();
 
-  for (var langCode of langCodes) {
+  for (const langCode of langCodes) {
     if (!langCode) {
       continue;
     }
     await downloadLanguageFiles(root, langCode);
   }
 
-  var removeCodes = [];
-  for (var entry of fs.readdirSync(root)) {
-    var dirPath = path.join(root, entry),
+  const removeCodes = [];
+  for (const entry of fs.readdirSync(root)) {
+    const dirPath = path.join(root, entry),
       stat = fs.lstatSync(dirPath);
 
     if (