diff options
-rwxr-xr-x | gui.py | 2 | ||||
-rw-r--r-- | lang-table | 40 | ||||
-rw-r--r-- | language.py | 13 | ||||
-rw-r--r-- | loader2/lang.c | 13 | ||||
-rw-r--r-- | loader2/lang.h | 2 |
5 files changed, 43 insertions, 27 deletions
@@ -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; } ; |