diff --git a/extra/extract-translations.js b/extra/extract-translations.js index 02ea310..6101edc 100644 --- a/extra/extract-translations.js +++ b/extra/extract-translations.js @@ -5,7 +5,7 @@ const JSON5 = require("json5"); // Extract translations from $t() functions in the source code and add the missing translations to all language files in src/languages/*.js async function extractTranslations() { - // Load all es6 module translation files into a commonJS process + // Load all ES6 module translation files into a commonJS process const languageList = {}; const filesNames = await fs.readdir("src/languages"); for (let fileName of filesNames) { @@ -18,17 +18,17 @@ async function extractTranslations() { const en = languageList.en; - // Search the source code for usages of $t() - const results = await findInFiles.find({ + const englishExtracted = []; + + // Search the source code for usages of $t(...) + const tFuncResults = await findInFiles.find({ term: "\\$t\\(([^)]+?)\\)", flags: "g", }, "./src", "\\.(vue|js)"); - const englishExtracted = []; - - // Make a list of all the found strings + // Add the found strings to the englishExtracted list const warnings = []; - Object.values(results).map(result => { + Object.values(tFuncResults).map(result => { result.matches.map(match => { const functionParams = match.substring(3, match.length - 1).trim(); const firstChar = functionParams[0]; @@ -43,6 +43,20 @@ async function extractTranslations() { }); }); + // Search the source code for usages of + const i18nTTagResults = await findInFiles.find({ + term: "]+keypath=\"([^\"]+)\"[^>]*>", + flags: "g", + }, "./src", "\\.vue"); + + // Add the found strings to the englishExtracted list + Object.values(i18nTTagResults).map(result => { + result.matches.map(match => { + const content = _.trim(match.split("keypath")[1].split("\"")[1], "\"' "); + englishExtracted.push(content); + }); + }); + // Update all languages with the missing strings for (let extractedTranslation of englishExtracted) { for (let langDict of Object.values(languageList)) {