diff --git a/src/editor/extensions/ext-imagelib/ext-imagelib.js b/src/editor/extensions/ext-imagelib/ext-imagelib.js
index 8a990c7e..f49d6b06 100644
--- a/src/editor/extensions/ext-imagelib/ext-imagelib.js
+++ b/src/editor/extensions/ext-imagelib/ext-imagelib.js
@@ -9,29 +9,46 @@
*
*/
-const loadExtensionTranslation = async function (lang) {
- let translationModule;
- try {
- // eslint-disable-next-line no-unsanitized/method
- translationModule = await import(`./locale/${encodeURIComponent(lang)}.js`);
- } catch (_error) {
- // eslint-disable-next-line no-console
- console.error(`Missing translation (${lang}) - using 'en'`);
- translationModule = await import(`./locale/en.js`);
- }
- return translationModule.default;
-};
+ const name = "imagelib";
+
+ 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: 'imagelib',
+ name,
async init({ decode64, dropXMLInternalSubset }) {
const svgEditor = this;
const { $id } = svgEditor.svgCanvas;
- const imagelibStrings = await loadExtensionTranslation(svgEditor.configObj.pref('lang'));
+ await loadExtensionTranslation(svgEditor);
const { svgCanvas } = svgEditor;
- const allowedImageLibOrigins = imagelibStrings.imgLibs.map(({ url }) => {
+ const imgLibs = [
+ {
+ name: svgEditor.i18next.t(`${name}:imgLibs_0_name`),
+ url: 'extensions/ext-imagelib/index.html',
+ description: svgEditor.i18next.t(`${name}:imgLibs_0_description`)
+ },
+ {
+ name: svgEditor.i18next.t(`${name}:imgLibs_1_name`),
+ url: 'https://ian.umces.edu/symbols/catalog/svgedit/album_chooser.php?svgedit=3',
+ description: svgEditor.i18next.t(`${name}:imgLibs_1_description`)
+ }
+ ];
+
+ const allowedImageLibOrigins = imgLibs.map(({ url }) => {
try {
return new URL(url).origin;
} catch (err) {
@@ -391,7 +408,7 @@ export default {
insertAfter($id('svg_editor'), div);
browser = $id('imgbrowse');
- const allLibs = imagelibStrings.select_lib;
+ const allLibs = svgEditor.i18next.t(`${name}:select_lib`);
const divFrameWrap = document.createElement('div');
divFrameWrap.id = 'lib_framewrap';
@@ -429,7 +446,7 @@ export default {
const back = document.createElement('button');
back.style.visibility = "hidden";
// eslint-disable-next-line max-len
- back.innerHTML = '' + imagelibStrings.show_list;
+ back.innerHTML = '' + svgEditor.i18next.t(`${name}:show_list`);
leftBlock.appendChild(back);
back.addEventListener('click', function () {
frame.setAttribute('src', 'about:blank');
@@ -451,9 +468,9 @@ export default {
const select = document.createElement('select');
select.innerHTML = '