summaryrefslogtreecommitdiffstats
path: root/language.py
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2006-02-21 22:02:39 +0000
committerDavid Cantrell <dcantrell@redhat.com>2006-02-21 22:02:39 +0000
commitd35c2d5b75d064de2b476a5dbabb9b40494e27f4 (patch)
tree77398a6d03d73d6d9fad45fbe3059f06feef3cea /language.py
parent6c2bf8230131d914f4f28d5c6e1b504f51cae76e (diff)
downloadanaconda-d35c2d5b75d064de2b476a5dbabb9b40494e27f4.tar.gz
anaconda-d35c2d5b75d064de2b476a5dbabb9b40494e27f4.tar.xz
anaconda-d35c2d5b75d064de2b476a5dbabb9b40494e27f4.zip
* anaconda: Pass the display mode we're running in to InstallData.
* instdata.py: Store the the display mode the installer is using. * language.py: For languages we can't display during installation in text mode, default to en_US.UTF-8, but write out the correct language for the final installation (#180417).
Diffstat (limited to 'language.py')
-rw-r--r--language.py53
1 files changed, 47 insertions, 6 deletions
diff --git a/language.py b/language.py
index 69ee5d8d7..d52377145 100644
--- a/language.py
+++ b/language.py
@@ -21,6 +21,21 @@ import rpm
from rhpl.translate import cat
from rhpl.simpleconfig import SimpleConfigFile
+import logging
+log = logging.getLogger("anaconda")
+
+# Languages that we cannot currently display in the text mode installer.
+# Each entry in this list is a 2-tuple: the broken lang name and what to
+# display in its place while the installer runs. This list is used for
+# reverse lookup later when we write out /etc/sysconfig/i18n
+#
+# NOTE: All values in this list are used for the $LANG environ var.
+brokenLangs = [ ("zh_CN.UTF-8", "en_US.UTF-8"),
+ ("zh_TW.UTF-8", "en_US.UTF-8"),
+ ("ja_JP.UTF-8", "en_US.UTF-8"),
+ ("ko_KR.UTF-8", "en_US.UTF-8"),
+ ]
+
# 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"
def expandLangs(astring):
@@ -39,14 +54,16 @@ def expandLangs(astring):
return langs
class Language:
- def __init__ (self):
+ def __init__ (self, display_mode):
self.info = {}
self.default = None
self.nativeLangNames = {}
self.localeInfo = {}
+ self.displayMode = display_mode
+ self.targetLang = None
if os.environ.has_key("LANG"):
- self.current = os.environ["LANG"]
+ self.current = self.fixLang(os.environ["LANG"])
else:
self.current = "en_US.UTF-8"
@@ -113,6 +130,23 @@ class Language:
if row[0] == name:
return k
+ def fixLang(self, langToFix):
+ ret = None
+
+ if self.targetLang is not None:
+ return langToFix
+
+ if self.displayMode == "t":
+ for (brokenLang, useableLang) in brokenLangs:
+ if langToFix == brokenLang:
+ self.targetLang = brokenLang
+ ret = useableLang
+
+ if ret is None:
+ ret = langToFix
+
+ return ret
+
def getNativeLangName(self, lang):
return self.nativeLangNames[lang]
@@ -151,7 +185,8 @@ class Language:
def setDefault(self, nick):
self.default = nick
- self.info['LANG'] = self.canonLangNick(nick)
+
+ self.info['LANG'] = self.fixLang(self.canonLangNick(nick))
self.info['SYSFONT'] = self.localeInfo[self.canonLangNick(nick)][2]
# XXX hack - because of exceptional cases on the var - zh_CN.GB2312
@@ -166,7 +201,7 @@ class Language:
canonNick = self.canonLangNick(nick)
self.setRuntimeDefaults(nick)
- os.environ["LANG"] = canonNick
+ os.environ["LANG"] = self.fixLang(canonNick)
os.environ["LC_NUMERIC"] = 'C'
try:
@@ -180,8 +215,14 @@ class Language:
f = open(instPath + "/etc/sysconfig/i18n", "w")
for key in self.info.keys():
if self.info[key] != None:
- f.write("%s=\"%s\"\n" % (key, self.info[key]))
+ if key == "LANG" and self.targetLang is not None:
+ f.write("%s=\"%s\"\n" % (key, self.targetLang))
+ else:
+ f.write("%s=\"%s\"\n" % (key, self.info[key]))
f.close()
def writeKS(self, f):
- f.write("lang %s\n" % self.info['LANG'])
+ if self.targetLang is not None:
+ f.write("lang %s\n" % self.targetLang)
+ else:
+ f.write("lang %s\n" % self.info['LANG'])