Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   Fedora User (http://www.linux-archive.org/fedora-user/)
-   -   If we change language during Python, build the new locale files. (http://www.linux-archive.org/fedora-user/510811-if-we-change-language-during-python-build-new-locale-files.html)

Chris Lumens 04-06-2011 05:13 PM

If we change language during Python, build the new locale files.
 
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.instLan guage.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.instLan guage.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.instLan guage.getDefaultTimeZone(anaconda.rootPath))

anaconda.intf.drawFrame()
--
1.7.4.1

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

Chris Lumens 04-06-2011 08:10 PM

If we change language during Python, build the new locale files.
 
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 32f6c0f..067750d 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.instLan guage.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.instLan guage.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.instLan guage.getDefaultTimeZone(anaconda.rootPath))

anaconda.intf.drawFrame()
--
1.7.4.1

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


All times are GMT. The time now is 08:22 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.