We hit this on DVD installs (or if nopass is provided) since we completely skip loader's language selection screen. --- anaconda | 1 + pyanaconda/iw/language_gui.py | 1 + pyanaconda/kickstart.py | 1 + pyanaconda/language.py | 20 +++++++++++++++++++- pyanaconda/textw/language_text.py | 1 + 5 files changed, 23 insertions(+), 1 deletions(-) diff --git a/anaconda b/anaconda index 94d6306..36242cb 100755 --- a/anaconda +++ b/anaconda @@ -883,6 +883,7 @@ if __name__ == "__main__": opts.lang = opts.lang.replace(".utf8", ".UTF-8") anaconda.dispatch.skipStep("language", permanent = 1) anaconda.instLanguage.instLang = opts.lang + anaconda.instLanguage.buildLocale() anaconda.instLanguage.systemLang = opts.lang anaconda.timezone.setTimezoneInfo(anaconda.instLanguage.getDefaultTimeZone(anaconda.rootPath)) diff --git a/pyanaconda/iw/language_gui.py b/pyanaconda/iw/language_gui.py index ef7124f..7bc771e 100644 --- a/pyanaconda/iw/language_gui.py +++ b/pyanaconda/iw/language_gui.py @@ -50,6 +50,7 @@ class LanguageWindow (InstallWindow): self.instLang.instLang = self.lang self.instLang.systemLang = self.lang + self.instLang.buildLocale() anaconda.timezone.setTimezoneInfo(anaconda.instLanguage.getDefaultTimeZone(anaconda.rootPath)) self.ics.getICW().setLanguage() diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py index cf14899..764b940 100644 --- a/pyanaconda/kickstart.py +++ b/pyanaconda/kickstart.py @@ -433,6 +433,7 @@ class Lang(commands.lang.FC3_Lang): def execute(self): self.anaconda.instLanguage.instLang = self.lang self.anaconda.instLanguage.systemLang = self.lang + self.anaconda.instLanguage.buildLocale() self.anaconda.ksdata.skipSteps.append("language") class LogVolData(commands.logvol.F15_LogVolData): diff --git a/pyanaconda/language.py b/pyanaconda/language.py index 4de330c..2db6e4f 100644 --- a/pyanaconda/language.py +++ b/pyanaconda/language.py @@ -21,6 +21,7 @@ # import os +import re import string import locale @@ -31,8 +32,13 @@ import system_config_keyboard.keyboard as keyboard import logging log = logging.getLogger("anaconda") +def langComponents(astring): + pattern = re.compile("(?P<language>[A-Za-z]+)(_(?P<territory>[A-Za-z]+))?(\.(?P<codeset>[-\w]+))?(@(?P<modifier>[-\w]+))?") + m = pattern.match(astring) + return m.groupdict() + # Converts a single language into a "language search path". For example, -# fr_FR.utf8@euro would become "fr_FR.utf8@eueo fr_FR.utf8 fr_FR fr" +# fr_FR.utf8@euro would become "fr_FR.utf8@euro fr_FR.utf8 fr_FR fr" def expandLangs(astring): langs = [astring] charset = None @@ -200,6 +206,18 @@ class Language(object): def available(self): return self.nativeLangNames.keys() + def buildLocale(self): + import iutil + + c = langComponents(self._instLang) + locale_p = c["language"] + if c["territory"]: + locale_p += "_" + c["territory"] + if c["modifier"]: + locale_p += "@" + c["modifier"] + + iutil.execWithRedirect("localedef", ["-i", locale_p, "-f", c["codeset"] or "UTF-8", self._instLang]) + def dracutSetupString(self): args="" diff --git a/pyanaconda/textw/language_text.py b/pyanaconda/textw/language_text.py index 7cb86e8..1a36535 100644 --- a/pyanaconda/textw/language_text.py +++ b/pyanaconda/textw/language_text.py @@ -63,6 +63,7 @@ class LanguageWindow: anaconda.instLanguage.instLang = choice anaconda.instLanguage.systemLang = choice + anaconda.instLanguage.buildLocale() anaconda.timezone.setTimezoneInfo(anaconda.instLanguage.getDefaultTimeZone(anaconda.rootPath)) anaconda.intf.drawFrame() -- 1.7.4.1 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list