diff --git a/js-build/localize-ftl.mjs b/js-build/localize-ftl.mjs index 745dfca5d2..7146d9b127 100644 --- a/js-build/localize-ftl.mjs +++ b/js-build/localize-ftl.mjs @@ -49,21 +49,25 @@ async function getFTL() { catch (e) { // no local .ftl file } + let baseFTL; let jsonFromEnUSFTL = {}; + try { const enUSFtlPath = join(getLocaleDir('en-US'), sourceFileBaseName + '.ftl'); - const ftl = await fs.readFile(enUSFtlPath, 'utf8'); - jsonFromEnUSFTL = ftlToJSON(ftl); + baseFTL = await fs.readFile(enUSFtlPath, 'utf8'); + jsonFromEnUSFTL = ftlToJSON(baseFTL); } catch (e) { - console.warn(`No en-US .ftl file for ${sourceFileBaseName}.`); + throw new Error(`No en-US .ftl file for ${sourceFileBaseName}.ftl`); } + const mergedSourceJSON = { ...jsonFromEnUSFTL, ...jsonFromLocalFTL }; const sourceKeys = Object.keys(mergedSourceJSON); const translated = new Map(); for (let key of sourceKeys) { - if (key in jsonFromTransifex) { + // ignore empty messages from transifex + if (key in jsonFromTransifex && jsonFromTransifex[key]?.string) { translated.set(key, jsonFromTransifex[key]); } else { @@ -71,7 +75,7 @@ async function getFTL() { } } - const ftl = JSONToFtl(Object.fromEntries(translated)); + const ftl = JSONToFtl(Object.fromEntries(translated), baseFTL); const outFtlPath = join(getLocaleDir(locale), sourceFileBaseName + '.ftl'); await fs.outputFile(outFtlPath, ftl); onProgress(`${locale}/${sourceFileBaseName}.ftl`, null, 'localize'); diff --git a/package-lock.json b/package-lock.json index f31af84a3d..2f9770b789 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.0.4", "fs-extra": "^3.0.1", - "ftl-tx": "^0.10.0", + "ftl-tx": "^0.11.0", "globby": "^6.1.0", "jspath": "^0.4.0", "mocha": "^10.4.0", @@ -3667,9 +3667,9 @@ } }, "node_modules/ftl-tx": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/ftl-tx/-/ftl-tx-0.10.0.tgz", - "integrity": "sha512-MtUChEGb2vQzVtQvEkNnEPCLbYDWdGkt0ytcXL71wN/4HIBHAeaRO5Y1+MnnkFKxfm0aVHBbwONHyRmS9ewJ9g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ftl-tx/-/ftl-tx-0.11.0.tgz", + "integrity": "sha512-tkE5Im6Pr2FzHQT/ZLYfK4Rt48Zok/4WY2ZXc/xvmjbpQ+Wvslgvy9KjrgTJbv8295NmZbp8NMTQeijBpejabQ==", "dev": true, "dependencies": { "@fluent/syntax": "^0.19.0" @@ -10588,9 +10588,9 @@ } }, "ftl-tx": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/ftl-tx/-/ftl-tx-0.10.0.tgz", - "integrity": "sha512-MtUChEGb2vQzVtQvEkNnEPCLbYDWdGkt0ytcXL71wN/4HIBHAeaRO5Y1+MnnkFKxfm0aVHBbwONHyRmS9ewJ9g==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ftl-tx/-/ftl-tx-0.11.0.tgz", + "integrity": "sha512-tkE5Im6Pr2FzHQT/ZLYfK4Rt48Zok/4WY2ZXc/xvmjbpQ+Wvslgvy9KjrgTJbv8295NmZbp8NMTQeijBpejabQ==", "dev": true, "requires": { "@fluent/syntax": "^0.19.0" diff --git a/package.json b/package.json index beb83e6b87..889ff8ecda 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.0.4", "fs-extra": "^3.0.1", - "ftl-tx": "^0.10.0", + "ftl-tx": "^0.11.0", "globby": "^6.1.0", "jspath": "^0.4.0", "mocha": "^10.4.0",