Exclude links to embedded images from translation

ba2b251d6e109e40938c40fbcdf683a6b88619eb

Yaroslav Sivakov <yar3333@gmail.com>

1 files changed, +21 -4Showing whitespace changes
public/scripts/extensions/translate/index.js+21 -4
@@ -406,6 +406,27 @@ async function translate(text, lang) {
406 lang = extension_settings.translate.target_language;406 lang = extension_settings.translate.target_language;
407 }407 }
408408
409 // split text by embedded images links
410 const chunks = text.split(/!\[.*?]\([^)]*\)/);
411 const links = [ ...text.matchAll(/!\[.*?]\([^)]*\)/g) ];
412
413 let r = "";
414 for (let i = 0; i < chunks.length; i++) {
415 r += await translateInner(chunks[i], lang);
416 if (i < links.length) r += links[i][0];
417 }
418
419 return r;
420 } catch (error) {
421 console.log(error);
422 toastr.error(String(error), 'Failed to translate message');
423 }
424}
425
426async function translateInner(text, lang) {
427 if (text == '') {
428 return '';
429 }
409 switch (extension_settings.translate.provider) {430 switch (extension_settings.translate.provider) {
410 case 'libre':431 case 'libre':
411 return await translateProviderLibre(text, lang);432 return await translateProviderLibre(text, lang);
@@ -427,10 +448,6 @@ async function translate(text, lang) {
427 console.error('Unknown translation provider', extension_settings.translate.provider);448 console.error('Unknown translation provider', extension_settings.translate.provider);
428 return text;449 return text;
429 }450 }
430 } catch (error) {
431 console.log(error);
432 toastr.error(String(error), 'Failed to translate message');
433 }
434}451}
435452
436async function translateOutgoingMessage(messageId) {453async function translateOutgoingMessage(messageId) {