/** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ const CWD = process.cwd(); const fs = require("fs-extra"); const glob = require("glob"); const path = require("path"); const mkdirp = require("mkdirp"); console.log("translation.js triggered..."); function writeFileAndCreateFolder(file, content) { mkdirp.sync(file.replace(new RegExp("/[^/]*$"), "")); fs.writeFileSync(file, content); } function execute() { if (fs.existsSync(CWD + "/languages.js")) { injectContent(); } else { console.log("No languages besides English enabled"); } } function injectContent() { const I18N_JSON_DIR = CWD + "/i18n/"; const files = glob.sync(I18N_JSON_DIR + "**"); const languages = []; const langRegex = /\/i18n\/(.*)\.json$/; files.forEach(file => { const extension = path.extname(file); if (extension == ".json") { const match = langRegex.exec(file); const language = match[1]; languages.push(language); } }); let injectedContent = ""; languages.forEach(language => { injectedContent += "\nsiteConfig['" + language + "'] = require('./i18n/" + language + ".json');"; }); let siteConfigFile = fs.readFileSync(CWD + "/siteConfig.js", "utf8"); const injectStart = "/* INJECT LOCALIZED FILES BEGIN */"; const injectEnd = "/* INJECT LOCALIZED FILES END */"; siteConfigFile = siteConfigFile.slice( 0, siteConfigFile.indexOf(injectStart) + injectStart.length ) + injectedContent + "\n" + siteConfigFile.slice(siteConfigFile.indexOf(injectEnd)); fs.writeFileSync(CWD + "/siteConfig.js", siteConfigFile); } module.exports = execute;