diff --git a/apps/common/main/lib/util/LanguageInfo.js b/apps/common/main/lib/util/LanguageInfo.js index aa4925e96d..4af949a961 100644 --- a/apps/common/main/lib/util/LanguageInfo.js +++ b/apps/common/main/lib/util/LanguageInfo.js @@ -441,20 +441,30 @@ Common.util.LanguageInfo = new(function() { 0x0433 : ["ven-ZA", "South Africa", "South Africa"] }; + var defLanguages = { + 'ar': 0x0401, // ar-SA + 'az': 0x042C, // az-Latn-AZ + 'en': 0x0409, // en-US + 'sr': 0x241A, // sr-Latn-RS + 'zh': 0x0004, // zh-Hans + }; + + var _getLocalLanguageCode = function(name) { + if (name) { + for (var code in localLanguageName) { + if (localLanguageName[code][0].toLowerCase()===name.toLowerCase()) + return code; + } + } + return null; + }; + return { getLocalLanguageName: function(code) { return localLanguageName[code] || ['', code]; }, - getLocalLanguageCode: function(name) { - if (name) { - for (var code in localLanguageName) { - if (localLanguageName[code][0].toLowerCase()===name.toLowerCase()) - return code; - } - } - return null; - }, + getLocalLanguageCode: _getLocalLanguageCode, /** * @typedef {Object} LangDisplayName @@ -490,6 +500,14 @@ Common.util.LanguageInfo = new(function() { return null; }, + getDefaultLanguageCode: function(name) { + name = name.toLowerCase(); + if (defLanguages[name]) + return defLanguages[name]; + name += '-' + name.toUpperCase(); + return _getLocalLanguageCode(name); + }, + getLanguages: function() { return localLanguageName; } diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 3349f1136b..2b93f81099 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -2824,10 +2824,14 @@ define([ arr = []; // system languages can be 'en'... (MacOs) sLangs.forEach(function(lang) { let rec = _.findWhere(me.languages, {value: lang}); + if (!rec) { + rec = Common.util.LanguageInfo.getDefaultLanguageCode(lang); + rec && (rec = _.findWhere(me.languages, {value: Common.util.LanguageInfo.getLocalLanguageName(rec)[0]})); + } if (!rec) rec = _.find(me.languages, function(item) { - return item.spellcheck && (item.value.indexOf(lang.toLowerCase())===0); - }); + return item.spellcheck && (item.value.indexOf(lang.toLowerCase())===0); + }); if (!rec) rec = _.find(me.languages, function(item) { return (item.value.indexOf(lang.toLowerCase())===0); diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index b5425b4ae0..6ada4b9277 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -2374,6 +2374,10 @@ define([ arr = []; // system languages can be 'en'... (MacOs) sLangs.forEach(function(lang) { let rec = _.findWhere(me.languages, {value: lang}); + if (!rec) { + rec = Common.util.LanguageInfo.getDefaultLanguageCode(lang); + rec && (rec = _.findWhere(me.languages, {value: Common.util.LanguageInfo.getLocalLanguageName(rec)[0]})); + } if (!rec) rec = _.find(me.languages, function(item) { return item.spellcheck && (item.value.indexOf(lang.toLowerCase())===0); diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index f8b9a13adc..3d520e2413 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -2940,6 +2940,11 @@ define([ arr = []; // system languages can be 'en'... (MacOs) sLangs.forEach(function(lang) { let rec = me.languages.indexOf(Common.util.LanguageInfo.getLocalLanguageCode(lang).toString())<0 ? null : lang; + if (!rec) { + rec = Common.util.LanguageInfo.getDefaultLanguageCode(lang); + rec = rec && me.languages.indexOf(rec.toString())>-1 ? rec : null; + rec && (rec = Common.util.LanguageInfo.getLocalLanguageName(parseInt(rec))[0]); + } if (!rec) { rec = _.find(me.languages, function(code) { return (Common.util.LanguageInfo.getLocalLanguageName(parseInt(code))[0].indexOf(lang.toLowerCase())===0);