From: Michael Tremer Date: Wed, 5 May 2021 18:54:21 +0000 (+0000) Subject: lang: Select the default language X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f7801fc60bda2b644ddb0eb514ec29f5e31d57e;p=people%2Fms%2Fbricklayer.git lang: Select the default language Signed-off-by: Michael Tremer --- diff --git a/src/python/lang.py b/src/python/lang.py index 6387a53..d58a448 100644 --- a/src/python/lang.py +++ b/src/python/lang.py @@ -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) diff --git a/src/python/tui/__init__.py b/src/python/tui/__init__.py index b0d492d..cb5aacc 100644 --- a/src/python/tui/__init__.py +++ b/src/python/tui/__init__.py @@ -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])