summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2003-01-13 06:11:33 +0000
committerJeremy Katz <katzj@redhat.com>2003-01-13 06:11:33 +0000
commit4a9ec0baa3343fce70914bfa9a125a31490e694b (patch)
treef483e50500e2dd86e623e761745533f78a44d276
parentc63fabbb1985a50e7cbf1e23dfeb1027c16d61eb (diff)
downloadanaconda-4a9ec0baa3343fce70914bfa9a125a31490e694b.tar.gz
anaconda-4a9ec0baa3343fce70914bfa9a125a31490e694b.tar.xz
anaconda-4a9ec0baa3343fce70914bfa9a125a31490e694b.zip
add support for the install time language to be different from the post-intsall
language as specified in the lang-table. this is needed for cjk locales because we want to use utf-8 for them during the install (we only have bterm support for utf-8), but we can't use utf-8 post-install yet because of lack of input method support and other such problems.
-rwxr-xr-xgui.py2
-rw-r--r--lang-table40
-rw-r--r--language.py13
-rw-r--r--loader2/lang.c13
-rw-r--r--loader2/lang.h2
5 files changed, 43 insertions, 27 deletions
diff --git a/gui.py b/gui.py
index a7e50d41e..737fb3fb5 100755
--- a/gui.py
+++ b/gui.py
@@ -1427,6 +1427,8 @@ class InstallControlState:
break
if text:
+ text = text.replace("@RHL@", productName)
+ text = text.replace("@RHLVER@", productVersion)
return text
print "Unable to read %s help text" % (file,)
diff --git a/lang-table b/lang-table
index 2e196ecc0..de9eec903 100644
--- a/lang-table
+++ b/lang-table
@@ -1,20 +1,20 @@
-Chinese(Simplified) zh_CN bterm None zh_CN.GB18030 us Asia/Shanghai
-Chinese(Traditional) zh_TW bterm None zh_TW.Big5 us Asia/Taipei
-Czech cs latarcyrheb-sun16 iso02 cs_CZ.UTF-8 cz-lat2 Europe/Prague
-Danish da latarcyrheb-sun16 iso15 da_DK.UTF-8 us Europe/Copenhagen
-Dutch nl latarcyrheb-sun16 iso15 nl_NL.UTF-8 us Europe/Amsterdam
-English en latarcyrheb-sun16 iso01 en_US.UTF-8 us America/New_York
-French fr latarcyrheb-sun16 iso15 fr_FR.UTF-8 fr-latin1 Europe/Paris
-German de latarcyrheb-sun16 iso09 de_DE.UTF-8 de-latin1-nodeadkeys Europe/Berlin
-Icelandic is latarcyrheb-sun16 iso15 is_IS.UTF-8 is-latin1 Atlantic/Reykjavik
-Italian it latarcyrheb-sun16 iso15 it_IT.UTF-8 it Europe/Rome
-Japanese ja bterm None ja_JP.eucJP jp106 Asia/Tokyo
-Korean ko bterm None ko_KR.eucKR us Asia/Seoul
-Norwegian no latarcyrheb-sun16 iso15 no_NO.UTF-8 no-latin1 Europe/Oslo
-Portuguese pt latarcyrheb-sun16 iso15 pt_PT.UTF-8 pt-latin1 Europe/Lisbon
-Portuguese(Brasilian) pt_BR latarcyrheb-sun16 iso15 pt_BR.UTF-8 pt-latin1 America/Sao_Paulo
-Russian ru latarcyrheb-sun16 koi8-r ru_RU.UTF-8 ru Europe/Moscow
-Slovenian sl latarcyrheb-sun16 iso02 sl_SI.UTF-8 slovene Europe/Ljubljana
-Spanish es latarcyrheb-sun16 iso15 es_ES.UTF-8 es Europe/Madrid
-Swedish sv latarcyrheb-sun16 iso15 sv_SE.UTF-8 se-latin1 Europe/Stockholm
-Ukrainian uk latarcyrheb-sun16 koi8-u uk_UA.UTF-8 ua Europe/Kiev
+Chinese(Simplified) zh_CN bterm None zh_CN.GB18030 us Asia/Shanghai zh_CN.UTF-8
+Chinese(Traditional) zh_TW bterm None zh_TW.Big5 us Asia/Taipei zh_TW.UTF-8
+Czech cs latarcyrheb-sun16 iso02 cs_CZ.UTF-8 cz-lat2 Europe/Prague cs_CZ.UTF-8
+Danish da latarcyrheb-sun16 iso15 da_DK.UTF-8 us Europe/Copenhagen da_DK.UTF-8
+Dutch nl latarcyrheb-sun16 iso15 nl_NL.UTF-8 us Europe/Amsterdam nl_NL.UTF-8
+English en latarcyrheb-sun16 iso01 en_US.UTF-8 us America/New_York en_US.UTF-8
+French fr latarcyrheb-sun16 iso15 fr_FR.UTF-8 fr-latin1 Europe/Paris fr_FR.UTF-8
+German de latarcyrheb-sun16 iso09 de_DE.UTF-8 de-latin1-nodeadkeys Europe/Berlin de_DE.UTF-8
+Icelandic is latarcyrheb-sun16 iso15 is_IS.UTF-8 is-latin1 Atlantic/Reykjavik is_IS.UTF-8
+Italian it latarcyrheb-sun16 iso15 it_IT.UTF-8 it Europe/Rome it_IT.UTF-8
+Japanese ja bterm None ja_JP.eucJP jp106 Asia/Tokyo ja_JP.UTF-8
+Korean ko bterm None ko_KR.eucKR us Asia/Seoul ko_KR.UTF-8
+Norwegian no latarcyrheb-sun16 iso15 no_NO.UTF-8 no-latin1 Europe/Oslo no_NO.UTF-8
+Portuguese pt latarcyrheb-sun16 iso15 pt_PT.UTF-8 pt-latin1 Europe/Lisbon pt_PT.UTF-8
+Portuguese(Brasilian) pt_BR latarcyrheb-sun16 iso15 pt_BR.UTF-8 pt-latin1 America/Sao_Paulo pt_BR.UTF-8
+Russian ru latarcyrheb-sun16 koi8-r ru_RU.UTF-8 ru Europe/Moscow ru_RU.UTF-8
+Slovenian sl latarcyrheb-sun16 iso02 sl_SI.UTF-8 slovene Europe/Ljubljana sl_SI.UTF-8
+Spanish es latarcyrheb-sun16 iso15 es_ES.UTF-8 es Europe/Madrid es_ES.UTF-8
+Swedish sv latarcyrheb-sun16 iso15 sv_SE.UTF-8 se-latin1 Europe/Stockholm sv_SE.UTF-8
+Ukrainian uk latarcyrheb-sun16 koi8-u uk_UA.UTF-8 ua Europe/Kiev uk_UA.UTF-8
diff --git a/language.py b/language.py
index 1a7323b5c..c8ba35f95 100644
--- a/language.py
+++ b/language.py
@@ -74,6 +74,7 @@ class InstallTimeLanguage:
self.kbd = {}
self.tz = {}
self.langList = []
+ self.runtimeLangs = {}
self.tempDefault = ""
@@ -87,6 +88,7 @@ class InstallTimeLanguage:
shortName = l[4]
keyboard = l[5]
timezone = l[6]
+ runtime = l[7]
self.langList.append(longName)
self.langNicks[longName] = shortName
@@ -94,6 +96,10 @@ class InstallTimeLanguage:
self.map[longName] = map
self.kbd[longName] = keyboard
self.tz[longName] = timezone
+ self.runtimeLangs[runtime] = shortName
+
+ if self.runtimeLangs.has_key(self.current):
+ self.current = self.runtimeLangs[self.current]
self.langList.sort()
self.setRuntimeLanguage(self.getLangNameByNick(self.current))
@@ -120,6 +126,13 @@ class InstallTimeLanguage:
if (nick == lang) or (nick == lang[0:len(nick)]) or (lang == nick[0:len(lang)]):
return langName
+ # FIXME: this could end up infinitely recursing if we screw up the
+ # lang-table. need to revise the whole thing with post-install
+ # language not being the same as the installer language
+ for (nick, main) in self.runtimeLangs.items():
+ if (nick == lang) or (nick == lang[0:len(nick)]) or (lang == nick[0:len(lang)]):
+ return self.getLangNameByNick(main)
+
#raise KeyError, "language %s not found" % lang
return self.getLangNameByNick("en_US.UTF-8")
diff --git a/loader2/lang.c b/loader2/lang.c
index 908d9554a..18ce36c46 100644
--- a/loader2/lang.c
+++ b/loader2/lang.c
@@ -92,7 +92,7 @@ static void loadLanguageList(int flags) {
FILE * f;
char line[256];
char name[256], key[256], font[256], map[256], code[256],
- keyboard[256], timezone[256];
+ keyboard[256], timezone[256], instlang[256];
int lineNum = 0;
f = fopen(file, "r");
@@ -105,8 +105,8 @@ static void loadLanguageList(int flags) {
while (fgets(line, sizeof(line), f)) {
lineNum++;
languages = realloc(languages, sizeof(*languages) * (numLanguages + 1));
- if (sscanf(line, "%s %s %s %s %s %s %s\n", name, key, font, map,
- code, keyboard, timezone) != 7) {
+ if (sscanf(line, "%s %s %s %s %s %s %s %s\n", name, key, font, map,
+ code, keyboard, timezone, instlang) != 8) {
logMessage("bad line %d in lang-table", lineNum);
} else {
languages[numLanguages].lang = strdup(name);
@@ -115,6 +115,7 @@ static void loadLanguageList(int flags) {
languages[numLanguages].map = strdup(map);
languages[numLanguages].lc_all = strdup(code);
languages[numLanguages].keyboard = strdup(keyboard);
+ languages[numLanguages].instlang = strdup(instlang);
numLanguages++;
}
}
@@ -213,9 +214,9 @@ static void setLangEnv (int i, int flags) {
if (!strcmp(languages[i].font, "None"))
return;
- setenv("LANG", languages[i].lc_all, 1);
+ setenv("LANG", languages[i].instlang, 1);
setenv("LANGKEY", languages[i].key, 1);
- setenv("LINGUAS", languages[i].lc_all, 1);
+ setenv("LINGUAS", languages[i].instlang, 1);
loadLanguage (NULL, flags);
}
@@ -363,7 +364,7 @@ int chooseLanguage(char ** lang, int flags) {
if (!strncmp(languages[i].key, "en", 2))
english = numLangs;
if (currentLangName &&
- !strcmp(languages[i].lc_all, currentLangName))
+ !strcmp(languages[i].instlang, currentLangName))
current = numLangs;
langs[numLangs++] = languages[i].lang;
diff --git a/loader2/lang.h b/loader2/lang.h
index 3a9af0d4a..5c0046072 100644
--- a/loader2/lang.h
+++ b/loader2/lang.h
@@ -7,7 +7,7 @@
#define N_(foo) (foo)
struct langInfo {
- char * lang, * key, * font, * map, * lc_all, * keyboard;
+ char * lang, * key, * font, * map, * lc_all, * keyboard, * instlang;
} ;