From 81a31c3dad1f8f6c7c673da96990a3f734d581c2 Mon Sep 17 00:00:00 2001 From: JFH <20402845+jfhenon@users.noreply.github.com> Date: Sun, 16 May 2021 00:48:06 +0200 Subject: [PATCH] need loadTranslation to be repeated as dynamic import behaves differently in build mode (vs src mode) --- .../ext-eyedropper/ext-eyedropper.js | 19 ++++++++++++++++--- src/editor/extensions/ext-grid/ext-grid.js | 19 ++++++++++++++++--- .../ext-helloworld/ext-helloworld.js | 19 ++++++++++++++++--- .../extensions/ext-polystar/ext-polystar.js | 19 ++++++++++++++++--- src/editor/locale.js | 15 --------------- 5 files changed, 64 insertions(+), 27 deletions(-) diff --git a/src/editor/extensions/ext-eyedropper/ext-eyedropper.js b/src/editor/extensions/ext-eyedropper/ext-eyedropper.js index 60c8f35c..49dee0b1 100644 --- a/src/editor/extensions/ext-eyedropper/ext-eyedropper.js +++ b/src/editor/extensions/ext-eyedropper/ext-eyedropper.js @@ -8,15 +8,28 @@ * */ -import { loadExtensionTranslation } from '../../locale.js'; - const name = "eyedropper"; +const loadExtensionTranslation = async function (svgEditor) { + let translationModule; + const lang = svgEditor.configObj.pref('lang'); + try { + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/${lang}.js`); + } catch (_error) { + // eslint-disable-next-line no-console + console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/en.js`); + } + svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); +}; + export default { name, async init(S) { const svgEditor = this; - await loadExtensionTranslation(svgEditor, name); + await loadExtensionTranslation(svgEditor); const { ChangeElementCommand } = S, // , svgcontent, // svgdoc = S.svgroot.parentNode.ownerDocument, { svgCanvas } = svgEditor, diff --git a/src/editor/extensions/ext-grid/ext-grid.js b/src/editor/extensions/ext-grid/ext-grid.js index 37e998ca..ad9722e0 100644 --- a/src/editor/extensions/ext-grid/ext-grid.js +++ b/src/editor/extensions/ext-grid/ext-grid.js @@ -7,15 +7,28 @@ * */ - import { loadExtensionTranslation } from '../../locale.js'; - const name = "grid"; + const loadExtensionTranslation = async function (svgEditor) { + let translationModule; + const lang = svgEditor.configObj.pref('lang'); + try { + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/${lang}.js`); + } catch (_error) { + // eslint-disable-next-line no-console + console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/en.js`); + } + svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); +}; + export default { name, async init ({ NS, getTypeMap }) { const svgEditor = this; - await loadExtensionTranslation(svgEditor, name); + await loadExtensionTranslation(svgEditor); const { svgCanvas } = svgEditor; const { $id } = svgCanvas; const svgdoc = document.getElementById('svgcanvas').ownerDocument; diff --git a/src/editor/extensions/ext-helloworld/ext-helloworld.js b/src/editor/extensions/ext-helloworld/ext-helloworld.js index 1afc39c6..b6c46cba 100644 --- a/src/editor/extensions/ext-helloworld/ext-helloworld.js +++ b/src/editor/extensions/ext-helloworld/ext-helloworld.js @@ -13,15 +13,28 @@ * will show the user the point on the canvas that was clicked on. */ -import { loadExtensionTranslation } from '../../locale.js'; - const name = "helloworld"; +const loadExtensionTranslation = async function (svgEditor) { + let translationModule; + const lang = svgEditor.configObj.pref('lang'); + try { + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/${lang}.js`); + } catch (_error) { + // eslint-disable-next-line no-console + console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/en.js`); + } + svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); +}; + export default { name, async init ({ _importLocale }) { const svgEditor = this; - await loadExtensionTranslation(svgEditor, name); + await loadExtensionTranslation(svgEditor); const { svgCanvas } = svgEditor; const { $id } = svgCanvas; return { diff --git a/src/editor/extensions/ext-polystar/ext-polystar.js b/src/editor/extensions/ext-polystar/ext-polystar.js index 5ba1bf9c..92f9a775 100644 --- a/src/editor/extensions/ext-polystar/ext-polystar.js +++ b/src/editor/extensions/ext-polystar/ext-polystar.js @@ -8,9 +8,22 @@ * */ -import { loadExtensionTranslation } from "../../locale.js"; + const name = "polystar"; -const name = "polystar"; +const loadExtensionTranslation = async function (svgEditor) { + let translationModule; + const lang = svgEditor.configObj.pref('lang'); + try { + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/${lang}.js`); + } catch (_error) { + // eslint-disable-next-line no-console + console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); + // eslint-disable-next-line no-unsanitized/method + translationModule = await import(`./locale/en.js`); + } + svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); +}; export default { name, @@ -21,7 +34,7 @@ export default { let selElems; let started; let newFO; - await loadExtensionTranslation(svgEditor, name); + await loadExtensionTranslation(svgEditor); /** * @param {boolean} on true=display diff --git a/src/editor/locale.js b/src/editor/locale.js index f1cc897b..9e482cd0 100644 --- a/src/editor/locale.js +++ b/src/editor/locale.js @@ -86,18 +86,3 @@ export const putLocale = async function (givenParam, goodLangs) { console.info(`Lang: ${i18next.t('lang')}`); return { langParam, i18next }; }; - -export const loadExtensionTranslation = async function (svgEditor, name) { - let translationModule; - const lang = svgEditor.configObj.pref('lang'); - try { - // eslint-disable-next-line no-unsanitized/method - translationModule = await import(`./extensions/ext-${name}/locale/${lang}.js`); - } catch (_error) { - // eslint-disable-next-line no-console - console.warn(`Missing translation (${lang}) for ${name} - using 'en'`); - // eslint-disable-next-line no-unsanitized/method - translationModule = await import(`./extensions/ext-${name}/locale/en.js`); - } - svgEditor.i18next.addResourceBundle(lang, name, translationModule.default); -};