diff options
Diffstat (limited to 'electron/src/lib/i18n.js')
| -rw-r--r-- | electron/src/lib/i18n.js | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/electron/src/lib/i18n.js b/electron/src/lib/i18n.js index de56fc8f..2a7c4f66 100644 --- a/electron/src/lib/i18n.js +++ b/electron/src/lib/i18n.js @@ -6,22 +6,33 @@ * */ -module.exports.selectLanguage = function (translations) { +export function selectLanguage(translations, flaskport) { + var port = flaskport + // get language from flask server, process in modern electron isn't exposed to renderer + const request = new XMLHttpRequest(); + request.open('GET', `http://127.0.0.1:${port}/languages`, false) + request.send(null) + var process = undefined + + if (request.status === 200) { + process = JSON.parse(request.responseText) + } // get a list of available translations var availableTranslations = ['en_US']; - for(var k in translations) availableTranslations.push(k); + for (var k in translations) availableTranslations.push(k); var lang = undefined; // get system language / Inkscape language ['LANG', 'LC_MESSAGES', 'LC_ALL', 'LANGUAGE'].forEach(language => { - if (process.env[language]) { + if (process[language]) { // split encoding information, we don't need it - var current_lang = process.env[language].split(".")[0]; + var current_lang = process[language].split('.')[0]; + if (current_lang.length == 2) { // current language has only two letters (e.g. en), // compare with available languages and if present, set to a long locale name (e.g. en_US) - lang = availableTranslations.find(elem => elem.startsWith(current_lang)); + lang = availableTranslations.find((elem) => elem.startsWith(current_lang)); } else { lang = current_lang; } @@ -33,3 +44,4 @@ module.exports.selectLanguage = function (translations) { } return lang } + |
