summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJeremy Katz <katzj@redhat.com>2002-06-07 00:28:04 +0000
committerJeremy Katz <katzj@redhat.com>2002-06-07 00:28:04 +0000
commitd94905ac00e087d983e0b71d945f13aa895eca6f (patch)
treee2c8c60b66a0909088d4fc5be54676dc00320d3b /scripts
parentfcba9b43ab1249840ec2b7dd8097145d55d39aaf (diff)
downloadanaconda-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-xscripts/genlocalelist149
-rwxr-xr-xscripts/genlocalelist.py165
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)