From dacf6377aedb7e47bbe499801ec4f700ddc7cdb6 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 11 May 2020 18:59:23 +0100 Subject: [PATCH] Desktop: WYSIWYG: Fixed UI translation issue for certain languages --- .eslintignore | 1 + .gitignore | 1 + .../gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx | 7 +++++-- ElectronClient/tools/copyTinyMceLangs.js | 12 ++++++++++++ ReactNativeClient/lib/locale.js | 4 ++-- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.eslintignore b/.eslintignore index 28b8dfcbbb..74a5e2875b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -34,6 +34,7 @@ ElectronClient/lib/vendor/sjcl.js ElectronClient/locales ElectronClient/node_modules ElectronClient/packageInfo.js +ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js highlight.pack.js Modules/TinyMCE/JoplinLists/ node_modules/ diff --git a/.gitignore b/.gitignore index 2139aafdde..aa02822611 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ ReactNativeClient/lib/csstojs/ ReactNativeClient/lib/rnInjectedJs/ ElectronClient/gui/note-viewer/fonts/ ElectronClient/gui/note-viewer/lib.js +ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js Clipper-source/ Clipper/joplin-webclipper-source.zip joplin-webclipper-source.zip diff --git a/ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx b/ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx index e504f3b729..ec5222ee4d 100644 --- a/ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx +++ b/ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx @@ -7,11 +7,12 @@ import { menuItems, ContextMenuOptions, ContextMenuItemType } from '../../utils/ const { MarkupToHtml } = require('lib/joplin-renderer'); const taboverride = require('taboverride'); const { reg } = require('lib/registry.js'); -const { _ } = require('lib/locale'); +const { _, closestSupportedLocale } = require('lib/locale'); const BaseItem = require('lib/models/BaseItem'); const Resource = require('lib/models/Resource'); const { themeStyle, buildStyle } = require('../../../../theme.js'); const { clipboard } = require('electron'); +const supportedLocales = require('./supportedLocales'); function markupRenderOptions(override:any = null) { return { @@ -473,6 +474,8 @@ const TinyMCE = (props:NoteBodyEditorProps, ref:any) => { const contextMenuItemNames = []; for (const name in contextMenuItems) contextMenuItemNames.push(contextMenuItemNameWithNamespace(name)); + const language = closestSupportedLocale(props.locale, true, supportedLocales); + const editors = await (window as any).tinymce.init({ selector: `#${rootIdRef.current}`, width: '100%', @@ -489,7 +492,7 @@ const TinyMCE = (props:NoteBodyEditorProps, ref:any) => { branding: false, target_list: false, table_resize_bars: false, - language: props.locale, + language: ['en_US', 'en_GB'].includes(language) ? undefined : language, toolbar: 'bold italic | link joplinInlineCode joplinCodeBlock joplinAttach | numlist bullist joplinChecklist | h1 h2 h3 hr blockquote table joplinInsertDateTime', localization_function: _, contextmenu: contextMenuItemNames.join(' '), diff --git a/ElectronClient/tools/copyTinyMceLangs.js b/ElectronClient/tools/copyTinyMceLangs.js index 5441dfd4e0..79342e088d 100644 --- a/ElectronClient/tools/copyTinyMceLangs.js +++ b/ElectronClient/tools/copyTinyMceLangs.js @@ -1,4 +1,5 @@ const fs = require('fs-extra'); +const glob = require('glob'); async function main() { const sourceDir = `${__dirname}/../../Modules/TinyMCE/langs`; @@ -7,6 +8,17 @@ async function main() { await fs.remove(destDir); await fs.mkdirp(destDir); await fs.copy(sourceDir, destDir); + + const supportedLocales = glob.sync(`${sourceDir}/*.js`).map(s => { + s = s.split('/'); + s = s[s.length - 1]; + s = s.split('.'); + return s[0]; + }); + + const content = `module.exports = ${JSON.stringify(supportedLocales, null, 2)}`; + + await fs.writeFile(`${__dirname}/../gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js`, content, 'utf8'); } module.exports = main; diff --git a/ReactNativeClient/lib/locale.js b/ReactNativeClient/lib/locale.js index c2173e6546..752f6f51f3 100644 --- a/ReactNativeClient/lib/locale.js +++ b/ReactNativeClient/lib/locale.js @@ -225,8 +225,8 @@ function supportedLocalesToLanguages(options = null) { return output; } -function closestSupportedLocale(canonicalName, defaultToEnglish = true) { - const locales = supportedLocales(); +function closestSupportedLocale(canonicalName, defaultToEnglish = true, locales = null) { + locales = locales === null ? supportedLocales() : locales; if (locales.indexOf(canonicalName) >= 0) return canonicalName; const requiredLanguage = languageCodeOnly(canonicalName).toLowerCase();