/Tools/i18n/makelocalealias.py
http://unladen-swallow.googlecode.com/ · Python · 73 lines · 49 code · 8 blank · 16 comment · 13 complexity · 9b64e56bead60b56c142a2434249808a MD5 · raw file
- #!/usr/bin/env python
- """
- Convert the X11 locale.alias file into a mapping dictionary suitable
- for locale.py.
- Written by Marc-Andre Lemburg <mal@genix.com>, 2004-12-10.
- """
- import locale
- # Location of the alias file
- LOCALE_ALIAS = '/usr/lib/X11/locale/locale.alias'
- def parse(filename):
- f = open(filename)
- lines = f.read().splitlines()
- data = {}
- for line in lines:
- line = line.strip()
- if not line:
- continue
- if line[:1] == '#':
- continue
- locale, alias = line.split()
- # Strip ':'
- if locale[-1] == ':':
- locale = locale[:-1]
- # Lower-case locale
- locale = locale.lower()
- # Ignore one letter locale mappings (except for 'c')
- if len(locale) == 1 and locale != 'c':
- continue
- # Normalize encoding, if given
- if '.' in locale:
- lang, encoding = locale.split('.')[:2]
- encoding = encoding.replace('-', '')
- encoding = encoding.replace('_', '')
- locale = lang + '.' + encoding
- if encoding.lower() == 'utf8':
- # Ignore UTF-8 mappings - this encoding should be
- # available for all locales
- continue
- data[locale] = alias
- return data
- def pprint(data):
- items = data.items()
- items.sort()
- for k,v in items:
- print ' %-40s%r,' % ('%r:' % k, v)
- def print_differences(data, olddata):
- items = olddata.items()
- items.sort()
- for k, v in items:
- if not data.has_key(k):
- print '# removed %r' % k
- elif olddata[k] != data[k]:
- print '# updated %r -> %r to %r' % \
- (k, olddata[k], data[k])
- # Additions are not mentioned
- if __name__ == '__main__':
- data = locale.locale_alias.copy()
- data.update(parse(LOCALE_ALIAS))
- print_differences(data, locale.locale_alias)
- print
- print 'locale_alias = {'
- pprint(data)
- print '}'