inkstitch/electron/src/lib/i18n.js

48 wiersze
1.4 KiB
JavaScript

/*
* Authors: see git history
*
* Copyright (c) 2010 Authors
* Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
*
*/
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);
var lang = undefined;
// get system language / Inkscape language
['LANG', 'LC_MESSAGES', 'LC_ALL', 'LANGUAGE'].forEach(language => {
if (process[language]) {
// split encoding information, we don't need it
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));
} else {
lang = current_lang;
}
}
})
// set default language
if (lang === undefined) {
lang = "en_US"
}
return lang
}