diff --git a/www/common/onlyoffice/inner.js b/www/common/onlyoffice/inner.js index 7e60bcc81..66cc2382a 100644 --- a/www/common/onlyoffice/inner.js +++ b/www/common/onlyoffice/inner.js @@ -2171,12 +2171,52 @@ define([ }); } - if (APP.startNew) { - var w = getWindow(); - if (lang === "fr") { lang = 'fr-fr'; } - var l = w.Common.util.LanguageInfo.getLocalLanguageCode(lang); - getEditor().asc_setDefaultLanguage(l); + //Ensure spellcheck set correctly (works only with localized language variants) + var editor = getEditor(); + if (typeof editor.asc_getDefaultLanguage === 'function' && typeof editor.asc_setDefaultLanguage === 'function') { + + var defaultLanguageCode = editor.asc_getDefaultLanguage(); + + const langToLocale = { + "en" : "en-us", + "fr" : "fr-fr", + "es" : "es-es", + "de" : "de-de" + }; + + const langCodeToLocale = { + 7: "de-de", + 9: "en-us", + 10: "es-es", + 12: "fr-fr" + }; + + const localeToLCID = Object.fromEntries( + Object.values(window.frames[0].AscCommon.g_aCultureInfos) + .map(info => [info.Name.toLowerCase(), info.LCID]) + ); + + if (APP.startNew) { + var w = getWindow(); + //If default language variant is generic - localize it + if (Object.keys(langToLocale).includes(lang)) { + lang = langToLocale[lang]; + } + var l = w.Common.util.LanguageInfo.getLocalLanguageCode(lang); + editor.asc_setDefaultLanguage(l); + + } else { + //Setting the language every time document loads prevents spellcheck from 'switching off' + var localeLang = langCodeToLocale[defaultLanguageCode]; + + //If default language variant is generic - localize it + if (defaultLanguageCode < 1000 && localeLang) { + defaultLanguageCode = localeToLCID[localeLang]; + } + editor.asc_setDefaultLanguage(defaultLanguageCode); + } } + } sframeChan.event('EV_OO_DOC_READY');