diff options
author | Jeremy Katz <katzj@redhat.com> | 2002-06-07 00:28:04 +0000 |
---|---|---|
committer | Jeremy Katz <katzj@redhat.com> | 2002-06-07 00:28:04 +0000 |
commit | d94905ac00e087d983e0b71d945f13aa895eca6f (patch) | |
tree | e2c8c60b66a0909088d4fc5be54676dc00320d3b /scripts | |
parent | fcba9b43ab1249840ec2b7dd8097145d55d39aaf (diff) | |
download | anaconda-d94905ac00e087d983e0b71d945f13aa895eca6f.tar.gz anaconda-d94905ac00e087d983e0b71d945f13aa895eca6f.tar.xz anaconda-d94905ac00e087d983e0b71d945f13aa895eca6f.zip |
perl is broken in the build roots currently, and I never liked perl to
begin with. rewrite genlocalelist in python.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/genlocalelist | 149 | ||||
-rwxr-xr-x | scripts/genlocalelist.py | 165 |
2 files changed, 165 insertions, 149 deletions
diff --git a/scripts/genlocalelist b/scripts/genlocalelist deleted file mode 100755 index b8ab0f3ed..000000000 --- a/scripts/genlocalelist +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/perl - -# This table is used to eliminate things like French (France) -$defaultTerritory{"Albanian"} = "Albania"; -$defaultTerritory{"Belarusian"} = "Belarus"; -$defaultTerritory{"Bulgarian"} = "Bulgaria"; -$defaultTerritory{"Croatian"} = "Croatia"; -$defaultTerritory{"Czech"} = "Czech Republic"; -$defaultTerritory{"Danish"} = "Denmark"; -$defaultTerritory{"Estonian"} = "Estonia"; -$defaultTerritory{"Finnish"} = "Finland"; -$defaultTerritory{"Greek"} = "Greece"; -$defaultTerritory{"Hungarian"} = "Hungary"; -$defaultTerritory{"Icelandic"} = "Iceland"; -$defaultTerritory{"Indonesian"} = "Indonesia"; -$defaultTerritory{"Irish"} = "Ireland"; -$defaultTerritory{"Japanese"} = "Japan"; -$defaultTerritory{"Lithuanian"} = "Lithuania"; -$defaultTerritory{"Macedonian"} = "Macedonia"; -$defaultTerritory{"Norwegian"} = "Norway"; -$defaultTerritory{"Polish"} = "Poland"; -$defaultTerritory{"Romanian"} = "Romania"; -$defaultTerritory{"Russian"} = "Russia"; -$defaultTerritory{"Slovak"} = "Slovak"; -$defaultTerritory{"Slovenian"} = "Slovenian"; -$defaultTerritory{"Ukrainian"} = "Ukraine"; -$defaultTerritory{"Vietnamese"} = "Vietnam"; -$defaultTerritory{"Turkish"} = "Turkey"; -$defaultTerritory{"Thai"} = "Thailand"; - -$charMap{"GB2312"} = "iso15"; -$charMap{"GB18030"} = "iso15"; -$charMap{"BIG5"} = "iso15"; -$charMap{"EUC-JP"} = "iso15"; -$charMap{"EUC-TW"} = "iso15"; -$charMap{"EUC-KR"} = "iso15"; -$charMap{"GB2312"} = "iso15"; -$charMap{"BIG5"} = "iso15"; -$charMap{"KOI8-U"} = "koi8-u"; -$charMap{"KOI8-R"} = "koi8-u"; -$charMap{"ISO-8859-1"} = "iso15"; -$charMap{"ISO-8859-2"} = "iso02"; -$charMap{"ISO-8859-3"} = "iso03"; -$charMap{"ISO-8859-5"} = "iso05"; -$charMap{"ISO-8859-6"} = "iso06"; -$charMap{"ISO-8859-7"} = "iso07"; -$charMap{"ISO-8859-8"} = "iso08"; -$charMap{"ISO-8859-9"} = "iso09"; -$charMap{"ISO-8859-15"} = "iso15"; -$charMap{"UTF-8"} = "utf8"; - -$charFont{"EUC-JP"} = "lat0-sun16"; -$charFont{"EUC-TW"} = "lat0-sun16"; -$charFont{"EUC-KR"} = "lat0-sun16"; -$charFont{"GB2312"} = "lat0-sun16"; -$charFont{"GB18030"} = "lat0-sun16"; -$charFont{"BIG5"} = "lat0-sun16"; -$charFont{"KOI8-U"} = "cyr-sun16"; -$charFont{"KOI8-R"} = "cyr-sun16"; -$charFont{"ISO-8859-1"} = "lat0-sun16"; -$charFont{"ISO-8859-2"} = "lat2-sun16"; -#$charFont{"ISO-8859-3"} = "iso03"; mk_MK -- no font available -$charFont{"ISO-8859-5"} = "cyr-sun16"; -$charFont{"ISO-8859-6"} = "LatArCyrHeb-16"; -$charFont{"ISO-8859-7"} = "iso07.16"; -$charFont{"ISO-8859-8"} = "LatArCyrHeb-16"; -$charFont{"ISO-8859-9"} = "lat5-sun16"; -$charFont{"ISO-8859-15"} = "lat0-sun16"; -$charFont{"UTF-8"} = "LatArCyrHeb-16"; - - -open(FILE, "locale -a|"); - -while (<FILE>) { -#for (['he_IL', 'en_US']) { - chop; - - # limit to items of the form xx_.* - /^[a-zA-Z][a-zA-Z]_/ || next; - - $lang=$_; - $lang =~ s/eucjp/eucJP/; - $lang =~ s/euckr/eucKR/; - $lang =~ s/gb18030/GB18030/; - $lang =~ s/^zh_CN$/zh_CN.GB2312/; - $lang =~ s/^zh_TW$/zh_TW.Big5/; - $lang =~ s/utf8/UTF-8/; - - # major hack. just chop of iso885915 and it'll be shorter - $lang =~ s/iso885915//; - - # someone put nb_NO in locale.alias. yuck. We don't - # want to offer that. - ("nb_" eq substr($lang, 0, 3)) && next; - ("zh_TW.euctw" eq $lang) && next; - ("zh_TW.utf8" eq $lang) && next; - - open(INFO, "LANG=$lang locale language territory charmap|"); - $name = <INFO>; - $territory = <INFO>; - $charmap = <INFO>; - close(INFO); - - chop $name; - chop $territory; - chop $charmap; - - # We don't want UTF-8. -# ($charmap eq "UTF-8") && next; - - # Some languages name's are the same as their ISO id's! - ($name eq substr($lang, 0, 2)) && next; - - if ($defaultTerritory{$name} eq "$territory") { - $fullName = $name; - } else { - $fullName = "$name ($territory)"; - } - - $langList{$lang} = $fullName; - $charmapList{$lang} = $charmap; -} - -close(FILE); - -for $key (keys %langList) { - $langName = $langList{$key}; - if ($nameList{$langName}) { - # we have a conflict. longest wins - if (length($key) > length($nameList{$langName})) { - $nameList{$langName} = $key; - } else { - } - } else { - $nameList{$langName} = $key; - } -} - -@names = sort(keys %nameList); - -for $name (@names) { - $short = $nameList{$name}; - $map = $charmapList{$short}; -# print $name . " " . $short . " " . $map . "\n"; - if ($charMap{$map} and $charFont{$map}) { - print "$short $charMap{$map} $charFont{$map} $name\n"; - } -} - diff --git a/scripts/genlocalelist.py b/scripts/genlocalelist.py new file mode 100755 index 000000000..948cb383d --- /dev/null +++ b/scripts/genlocalelist.py @@ -0,0 +1,165 @@ +#!/usr/bin/python +# +# Copyright 2002 Red Hat, Inc. +# +# This software may be freely redistributed under the terms of the GNU +# general public license. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +import os, sys +import string +import re + + +defaultTerritory = {} +# This table is used to eliminate things like French (France) +defaultTerritory["Albanian"] = "Albania" +defaultTerritory["Belarusian"] = "Belarus" +defaultTerritory["Bulgarian"] = "Bulgaria" +defaultTerritory["Croatian"] = "Croatia" +defaultTerritory["Czech"] = "Czech Republic" +defaultTerritory["Danish"] = "Denmark" +defaultTerritory["Estonian"] = "Estonia" +defaultTerritory["Finnish"] = "Finland" +defaultTerritory["Greek"] = "Greece" +defaultTerritory["Hungarian"] = "Hungary" +defaultTerritory["Icelandic"] = "Iceland" +defaultTerritory["Indonesian"] = "Indonesia" +defaultTerritory["Irish"] = "Ireland" +defaultTerritory["Japanese"] = "Japan" +defaultTerritory["Lithuanian"] = "Lithuania" +defaultTerritory["Macedonian"] = "Macedonia" +defaultTerritory["Norwegian"] = "Norway" +defaultTerritory["Polish"] = "Poland" +defaultTerritory["Romanian"] = "Romania" +defaultTerritory["Russian"] = "Russia" +defaultTerritory["Slovak"] = "Slovak" +defaultTerritory["Slovenian"] = "Slovenian" +defaultTerritory["Ukrainian"] = "Ukraine" +defaultTerritory["Vietnamese"] = "Vietnam" +defaultTerritory["Turkish"] = "Turkey" +defaultTerritory["Thai"] = "Thailand" + +charMap = {} +charMap["GB2312"] = "iso15" +charMap["GB18030"] = "iso15" +charMap["BIG5"] = "iso15" +charMap["EUC-JP"] = "iso15" +charMap["EUC-TW"] = "iso15" +charMap["EUC-KR"] = "iso15" +charMap["GB2312"] = "iso15" +charMap["BIG5"] = "iso15" +charMap["KOI8-U"] = "koi8-u" +charMap["KOI8-R"] = "koi8-u" +charMap["ISO-8859-1"] = "iso15" +charMap["ISO-8859-2"] = "iso02" +charMap["ISO-8859-3"] = "iso03" +charMap["ISO-8859-5"] = "iso05" +charMap["ISO-8859-6"] = "iso06" +charMap["ISO-8859-7"] = "iso07" +charMap["ISO-8859-8"] = "iso08" +charMap["ISO-8859-9"] = "iso09" +charMap["ISO-8859-15"] = "iso15" +charMap["UTF-8"] = "utf8" + +charFont = {} +charFont["EUC-JP"] = "lat0-sun16" +charFont["EUC-TW"] = "lat0-sun16" +charFont["EUC-KR"] = "lat0-sun16" +charFont["GB2312"] = "lat0-sun16" +charFont["GB18030"] = "lat0-sun16" +charFont["BIG5"] = "lat0-sun16" +charFont["KOI8-U"] = "cyr-sun16" +charFont["KOI8-R"] = "cyr-sun16" +charFont["ISO-8859-1"] = "lat0-sun16" +charFont["ISO-8859-2"] = "lat2-sun16" +#charFont["ISO-8859-3"] = "iso03" mk_MK -- no font available +charFont["ISO-8859-5"] = "cyr-sun16" +charFont["ISO-8859-6"] = "LatArCyrHeb-16" +charFont["ISO-8859-7"] = "iso07.16" +charFont["ISO-8859-8"] = "LatArCyrHeb-16" +charFont["ISO-8859-9"] = "lat5-sun16" +charFont["ISO-8859-15"] = "lat0-sun16" +charFont["UTF-8"] = "LatArCyrHeb-16" + + + +f = os.popen("locale -a", "r") +lines = f.readlines() +f.close() + + +langList = {} +charmapList = {} +nameList = {} + +for line in lines: + line = line[:-1] + line = line.strip() + + # limit to items of the form xx_.* + if not re.search("^[a-zA-Z][a-zA-Z]_", line): + continue + + lang = line + lang = lang.replace("eucjp", "eucJP") + lang = lang.replace("euckr", "eucKR") + lang = lang.replace("gb18030", "GB18030") + lang = re.sub("^zh_CN$", "zh_CN.GB2312", lang) + lang = re.sub("^zh_TW$", "zh_TW.Big5", lang) + lang = lang.replace("utf8", "UTF-8") + + # major hack... chop off iso885915 to make it shorter + lang = re.sub(".iso885915$", "", lang) + + # someone put nb_NO in locale.alias. yuck. We don't want + # to offer that + if lang.startswith("nb_") or lang.startswith("iw_"): + continue + if lang in ["zh_TW.euctw", "zh_TW.UTF-8", "ja_JP.UTF-8"]: + continue + + f = os.popen("LANG=%s locale language territory charmap" %(lang,), "r") + name = f.readline() + territory = f.readline() + charmap = f.readline() + f.close() + + name = name[:-1].strip() + territory = territory[:-1].strip() + charmap = charmap[:-1].strip() + + # we don't want utf-8 +# if charmap == "UTF-8": +# continue + + # some languages names are the same as their iso id + if name == lang[:2]: + continue + + if defaultTerritory.has_key(name) and defaultTerritory[name] == territory: + fullName = name + else: + fullName = "%s (%s)" %(name, territory) + + + if nameList.has_key(fullName): + if len(lang) < len(nameList[fullName]): + continue + nameList[fullName] = lang + langList[lang] = fullName + charmapList[lang] = charmap + + +names = nameList.keys() +names.sort() + +for name in names: + short = nameList[name] + map = charmapList[short] + + if charMap.has_key(map) and charFont.has_key(map): + print "%s %s %s %s" %(short, charMap[map], charFont[map], name) |