summaryrefslogtreecommitdiff
path: root/electron/src/lib/i18n.js
blob: 2a7c4f665ef9f96044a8a8595044bece64b26edd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * 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
}