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
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)
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])