diff --git a/lib/server/find-strings-plugin.js b/lib/server/find-strings-plugin.js new file mode 100644 index 0000000000..05b93f1c7a --- /dev/null +++ b/lib/server/find-strings-plugin.js @@ -0,0 +1,45 @@ +/** + * 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. + */ + +/* find all strings with their descriptions that need to be translated and write + to i18n/en.json file */ + +const fs = require("fs"); + +module.exports = function findStringsPlugin(babel) { + const { types: t } = babel; + + const translationsFile = process.cwd() + "/i18n/en.json"; + let currentTranslations = JSON.parse( + fs.readFileSync(translationsFile, "utf8") + ); + + return { + visitor: { + JSXElement(path) { + if (path.node.openingElement.name.name !== "Translate") { + return; + } + const text = path.node.children[0].value.trim(); + let description; + const attributes = path.node.openingElement.attributes; + for (let i = 0; i < attributes.length; i++) { + if (attributes[i].name.name === "desc") { + description = attributes[i].value.value; + } + } + if (!currentTranslations["pages-strings"]) { + currentTranslations["pages-strings"] = {}; + } + currentTranslations["pages-strings"][text + "|" + description] = text; + fs.writeFileSync(translationsFile, JSON.stringify(currentTranslations)); + } + } + }; +}; diff --git a/lib/server/writeTranslations.js b/lib/server/writeTranslations.js index 5f9d7b579a..a9637cfd9b 100644 --- a/lib/server/writeTranslations.js +++ b/lib/server/writeTranslations.js @@ -18,6 +18,7 @@ const path = require("path"); const siteConfig = require(CWD + "/siteConfig.js"); const babylon = require("babylon"); const traverse = require("babel-traverse").default; +const siteConfig = require(CWD + "/siteConfig.js"); function writeFileAndCreateFolder(file, content) { mkdirp.sync(file.replace(new RegExp("/[^/]*$"), "")); @@ -88,6 +89,7 @@ function execute() { }); writeFileAndCreateFolder(CWD + "/i18n/en.json", JSON.stringify(translations)); + } module.exports = execute; diff --git a/package.json b/package.json index 67d0a8cd27..5e474a52c8 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "examples": "./lib/copy-examples.js" }, "dependencies": { + "babel-cli": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-register": "^6.24.1", "babel-traverse": "^6.25.0",