]> git.ipfire.org Git - people/ms/bricklayer.git/commitdiff
lang: Select the default language
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 May 2021 18:54:21 +0000 (18:54 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 May 2021 18:54:21 +0000 (18:54 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/python/lang.py
src/python/tui/__init__.py

index 6387a531930531e2753ccd81de2a6df892eddbb3..d58a4488e7fbafbb315e4c933352fdaec9325f23 100644 (file)
@@ -28,10 +28,14 @@ from .i18n import _, N_
 log = logging.getLogger("bricklayer.lang")
 
 supported_languages = {
-       "de_DE" : N_("Deutsch"),
-       "en_US" : N_("English (United States)"),
+       "de_DE.UTF-8" : N_("Deutsch"),
+       "en_US.UTF-8" : N_("English (United States)"),
 }
 
+default_language = "en_US.UTF-8"
+
+assert default_language in supported_languages
+
 class SelectLanguage(step.Step):
        """
                Ask the user which language to use for the installation process
@@ -42,14 +46,25 @@ class SelectLanguage(step.Step):
                return not self.bricklayer.unattended
 
        def initialize(self):
-               self.current_language = os.environ.get("LANG")
+               self.current_language = self._guess_language()
+
+       def _guess_language(self):
+               """
+                       Guesses the selected language from the environment
+               """
+               for param in ("LANGUAGE", "LANG", "LC_ALL"):
+                       lang = os.environ.get(param, None)
+                       if lang and lang in supported_languages:
+                               return lang
+
+               return default_language
 
        def run(self, tui):
                # Let the user select
                code = tui.select(
                        _("Language Selection"),
                        _("Select the language you wish to use for the installation"),
-                       supported_languages, buttons=(_("Select"),)
+                       supported_languages, default=self.current_language, buttons=(_("Select"),)
                )
 
                log.info("Language selected: %s" % code)
index b0d492d449df44c85ef2430aab163556e84b121e..cb5aacc9d4860d9dcfeb8affdfa1630b3950c0f8 100644 (file)
@@ -108,6 +108,10 @@ class Tui(object):
                return ProgressWindow(self, *args, **kwargs)
 
        def select(self, title, text, items, buttons=None, default=None, help=None):
+               # Translate default
+               if default:
+                       default = items.get(default, None)
+
                # Convert items into a list which is sorted by its values
                items = sorted(items.items(), key=lambda item: item[1])