home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Calibre / calibre-0.8.18.msi / file_262 / locale.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-09-09  |  43.1 KB  |  1,600 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.7)
  3.  
  4. import sys
  5. import encodings
  6. import encodings.aliases as encodings
  7. import re
  8. import operator
  9. import functools
  10. __all__ = [
  11.     'getlocale',
  12.     'getdefaultlocale',
  13.     'getpreferredencoding',
  14.     'Error',
  15.     'setlocale',
  16.     'resetlocale',
  17.     'localeconv',
  18.     'strcoll',
  19.     'strxfrm',
  20.     'str',
  21.     'atof',
  22.     'atoi',
  23.     'format',
  24.     'format_string',
  25.     'currency',
  26.     'normalize',
  27.     'LC_CTYPE',
  28.     'LC_COLLATE',
  29.     'LC_TIME',
  30.     'LC_MONETARY',
  31.     'LC_NUMERIC',
  32.     'LC_ALL',
  33.     'CHAR_MAX']
  34.  
  35. try:
  36.     from _locale import *
  37. except ImportError:
  38.     CHAR_MAX = 127
  39.     LC_ALL = 6
  40.     LC_COLLATE = 3
  41.     LC_CTYPE = 0
  42.     LC_MESSAGES = 5
  43.     LC_MONETARY = 4
  44.     LC_NUMERIC = 1
  45.     LC_TIME = 2
  46.     Error = ValueError
  47.     
  48.     def localeconv():
  49.         return {
  50.             'grouping': [
  51.                 127],
  52.             'currency_symbol': '',
  53.             'n_sign_posn': 127,
  54.             'p_cs_precedes': 127,
  55.             'n_cs_precedes': 127,
  56.             'mon_grouping': [],
  57.             'n_sep_by_space': 127,
  58.             'decimal_point': '.',
  59.             'negative_sign': '',
  60.             'positive_sign': '',
  61.             'p_sep_by_space': 127,
  62.             'int_curr_symbol': '',
  63.             'p_sign_posn': 127,
  64.             'thousands_sep': '',
  65.             'mon_thousands_sep': '',
  66.             'frac_digits': 127,
  67.             'mon_decimal_point': '',
  68.             'int_frac_digits': 127 }
  69.  
  70.     
  71.     def setlocale(category, value = None):
  72.         if value not in (None, '', 'C'):
  73.             raise Error, '_locale emulation only supports "C" locale'
  74.         return 'C'
  75.  
  76.     
  77.     def strcoll(a, b):
  78.         return cmp(a, b)
  79.  
  80.     
  81.     def strxfrm(s):
  82.         return s
  83.  
  84.  
  85. _localeconv = localeconv
  86. _override_localeconv = { }
  87.  
  88. def localeconv():
  89.     d = _localeconv()
  90.     if _override_localeconv:
  91.         d.update(_override_localeconv)
  92.     return d
  93.  
  94. localeconv = functools.wraps(_localeconv)(localeconv)
  95.  
  96. def _grouping_intervals(grouping):
  97.     last_interval = None
  98.     for interval in grouping:
  99.         if interval == CHAR_MAX:
  100.             return None
  101.         if None == 0:
  102.             if last_interval is None:
  103.                 raise ValueError('invalid grouping')
  104.             while True:
  105.                 yield last_interval
  106.         yield interval
  107.         last_interval = interval
  108.     
  109.  
  110.  
  111. def _group(s, monetary = False):
  112.     conv = localeconv()
  113.     if not monetary or 'mon_thousands_sep':
  114.         pass
  115.     thousands_sep = conv['thousands_sep']
  116.     if not monetary or 'mon_grouping':
  117.         pass
  118.     grouping = conv['grouping']
  119.     if not grouping:
  120.         return (s, 0)
  121.     result = None
  122.     seps = 0
  123.     if s[-1] == ' ':
  124.         stripped = s.rstrip()
  125.         right_spaces = s[len(stripped):]
  126.         s = stripped
  127.     else:
  128.         right_spaces = ''
  129.     left_spaces = ''
  130.     groups = []
  131.     for interval in _grouping_intervals(grouping):
  132.         if not s or s[-1] not in '0123456789':
  133.             left_spaces = s
  134.             s = ''
  135.             break
  136.         groups.append(s[-interval:])
  137.         s = s[:-interval]
  138.     
  139.     if s:
  140.         groups.append(s)
  141.     groups.reverse()
  142.     return (left_spaces + thousands_sep.join(groups) + right_spaces, len(thousands_sep) * (len(groups) - 1))
  143.  
  144.  
  145. def _strip_padding(s, amount):
  146.     lpos = 0
  147.     while amount and s[lpos] == ' ':
  148.         lpos += 1
  149.         amount -= 1
  150.     rpos = len(s) - 1
  151.     while amount and s[rpos] == ' ':
  152.         rpos -= 1
  153.         amount -= 1
  154.     return s[lpos:rpos + 1]
  155.  
  156. _percent_re = re.compile('%(?:\\((?P<key>.*?)\\))?(?P<modifiers>[-#0-9 +*.hlL]*?)[eEfFgGdiouxXcrs%]')
  157.  
  158. def format(percent, value, grouping = False, monetary = False, *additional):
  159.     match = _percent_re.match(percent)
  160.     if not match or len(match.group()) != len(percent):
  161.         raise ValueError('format() must be given exactly one %%char format specifier, %s not valid' % repr(percent))
  162.     return _format(percent, value, grouping, monetary, *additional)
  163.  
  164.  
  165. def _format(percent, value, grouping = False, monetary = False, *additional):
  166.     if additional:
  167.         formatted = percent % ((value,) + additional)
  168.     else:
  169.         formatted = percent % value
  170.     if percent[-1] in 'eEfFgG':
  171.         seps = 0
  172.         parts = formatted.split('.')
  173.         if grouping:
  174.             (parts[0], seps) = _group(parts[0], monetary = monetary)
  175.         if not monetary or 'mon_decimal_point':
  176.             pass
  177.         decimal_point = localeconv()['decimal_point']
  178.         formatted = decimal_point.join(parts)
  179.         if seps:
  180.             formatted = _strip_padding(formatted, seps)
  181.         
  182.     elif percent[-1] in 'diu':
  183.         seps = 0
  184.         if grouping:
  185.             (formatted, seps) = _group(formatted, monetary = monetary)
  186.         if seps:
  187.             formatted = _strip_padding(formatted, seps)
  188.         
  189.     return formatted
  190.  
  191.  
  192. def format_string(f, val, grouping = False):
  193.     percents = list(_percent_re.finditer(f))
  194.     new_f = _percent_re.sub('%s', f)
  195.     if operator.isMappingType(val):
  196.         new_val = []
  197.         for perc in percents:
  198.             if perc.group()[-1] == '%':
  199.                 new_val.append('%')
  200.                 continue
  201.             new_val.append(format(perc.group(), val, grouping))
  202.         
  203.     elif not isinstance(val, tuple):
  204.         val = (val,)
  205.     new_val = []
  206.     i = 0
  207.     for perc in percents:
  208.         if perc.group()[-1] == '%':
  209.             new_val.append('%')
  210.             continue
  211.         starcount = perc.group('modifiers').count('*')
  212.         new_val.append(_format(perc.group(), val[i], grouping, False, *val[i + 1:i + 1 + starcount]))
  213.         i += 1 + starcount
  214.     
  215.     val = tuple(new_val)
  216.     return new_f % val
  217.  
  218.  
  219. def currency(val, symbol = True, grouping = False, international = False):
  220.     conv = localeconv()
  221.     if not international or 'int_frac_digits':
  222.         pass
  223.     digits = conv['frac_digits']
  224.     if digits == 127:
  225.         raise ValueError("Currency formatting is not possible using the 'C' locale.")
  226.     s = format('%%.%if' % digits, abs(val), grouping, monetary = True)
  227.     s = '<' + s + '>'
  228.     if symbol:
  229.         if not international or 'int_curr_symbol':
  230.             pass
  231.         smb = conv['currency_symbol']
  232.         if not val < 0 or 'n_cs_precedes':
  233.             pass
  234.         precedes = conv['p_cs_precedes']
  235.         if not val < 0 or 'n_sep_by_space':
  236.             pass
  237.         separated = conv['p_sep_by_space']
  238.         if precedes:
  239.             if not separated or ' ':
  240.                 pass
  241.             s = smb + '' + s
  242.         elif not separated or ' ':
  243.             pass
  244.         s = s + '' + smb
  245.     if not val < 0 or 'n_sign_posn':
  246.         pass
  247.     sign_pos = conv['p_sign_posn']
  248.     if not val < 0 or 'negative_sign':
  249.         pass
  250.     sign = conv['positive_sign']
  251.     if sign_pos == 0:
  252.         s = '(' + s + ')'
  253.     elif sign_pos == 1:
  254.         s = sign + s
  255.     elif sign_pos == 2:
  256.         s = s + sign
  257.     elif sign_pos == 3:
  258.         s = s.replace('<', sign)
  259.     elif sign_pos == 4:
  260.         s = s.replace('>', sign)
  261.     else:
  262.         s = sign + s
  263.     return s.replace('<', '').replace('>', '')
  264.  
  265.  
  266. def str(val):
  267.     return format('%.12g', val)
  268.  
  269.  
  270. def atof(string, func = float):
  271.     ts = localeconv()['thousands_sep']
  272.     if ts:
  273.         string = string.replace(ts, '')
  274.     dd = localeconv()['decimal_point']
  275.     if dd:
  276.         string = string.replace(dd, '.')
  277.     return func(string)
  278.  
  279.  
  280. def atoi(str):
  281.     return atof(str, int)
  282.  
  283.  
  284. def _test():
  285.     setlocale(LC_ALL, '')
  286.     s1 = format('%d', 123456789, 1)
  287.     print s1, 'is', atoi(s1)
  288.     s1 = str(3.14)
  289.     print s1, 'is', atof(s1)
  290.  
  291. _setlocale = setlocale
  292.  
  293. def normalize(localename):
  294.     fullname = localename.lower()
  295.     if ':' in fullname:
  296.         fullname = fullname.replace(':', '.')
  297.     if '.' in fullname:
  298.         (langname, encoding) = fullname.split('.')[:2]
  299.         fullname = langname + '.' + encoding
  300.     else:
  301.         langname = fullname
  302.         encoding = ''
  303.     norm_encoding = encoding.replace('-', '')
  304.     norm_encoding = norm_encoding.replace('_', '')
  305.     lookup_name = langname + '.' + encoding
  306.     code = locale_alias.get(lookup_name, None)
  307.     if code is not None:
  308.         return code
  309.     code = None.get(langname, None)
  310.     if code is not None:
  311.         if '.' in code:
  312.             (langname, defenc) = code.split('.')
  313.         else:
  314.             langname = code
  315.             defenc = ''
  316.         if encoding:
  317.             norm_encoding = encodings.normalize_encoding(encoding)
  318.             norm_encoding = encodings.aliases.aliases.get(norm_encoding, norm_encoding)
  319.             encoding = locale_encoding_alias.get(norm_encoding, norm_encoding)
  320.         else:
  321.             encoding = defenc
  322.         if encoding:
  323.             return langname + '.' + encoding
  324.         return None
  325.     return localename
  326.  
  327.  
  328. def _parse_localename(localename):
  329.     code = normalize(localename)
  330.     if '@' in code:
  331.         (code, modifier) = code.split('@')
  332.         if modifier == 'euro' and '.' not in code:
  333.             return (code, 'iso-8859-15')
  334.     if '.' in code:
  335.         return tuple(code.split('.')[:2])
  336.     if None == 'C':
  337.         return (None, None)
  338.     raise None, 'unknown locale: %s' % localename
  339.  
  340.  
  341. def _build_localename(localetuple):
  342.     (language, encoding) = localetuple
  343.     if language is None:
  344.         language = 'C'
  345.     if encoding is None:
  346.         return language
  347.     return None + '.' + encoding
  348.  
  349.  
  350. def getdefaultlocale(envvars = ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')):
  351.     
  352.     try:
  353.         import _locale
  354.         (code, encoding) = _locale._getdefaultlocale()
  355.     except (ImportError, AttributeError):
  356.         pass
  357.  
  358.     if sys.platform == 'win32' and code and code[:2] == '0x':
  359.         code = windows_locale.get(int(code, 0))
  360.     return (code, encoding)
  361.     import os
  362.     lookup = os.environ.get
  363.     for variable in envvars:
  364.         localename = lookup(variable, None)
  365.         if localename or variable == 'LANGUAGE':
  366.             localename = localename.split(':')[0]
  367.     else:
  368.         localename = 'C'
  369.     return _parse_localename(localename)
  370.  
  371.  
  372. def getlocale(category = LC_CTYPE):
  373.     localename = _setlocale(category)
  374.     if category == LC_ALL and ';' in localename:
  375.         raise TypeError, 'category LC_ALL is not supported'
  376.     return _parse_localename(localename)
  377.  
  378.  
  379. def setlocale(category, locale = None):
  380.     if locale and type(locale) is not type(''):
  381.         locale = normalize(_build_localename(locale))
  382.     return _setlocale(category, locale)
  383.  
  384.  
  385. def resetlocale(category = LC_ALL):
  386.     _setlocale(category, _build_localename(getdefaultlocale()))
  387.  
  388. if sys.platform.startswith('win'):
  389.     
  390.     def getpreferredencoding(do_setlocale = True):
  391.         import _locale
  392.         return _locale._getdefaultlocale()[1]
  393.  
  394. else:
  395.     
  396.     try:
  397.         CODESET
  398.     except NameError:
  399.         
  400.         def getpreferredencoding(do_setlocale = True):
  401.             return getdefaultlocale()[1]
  402.  
  403.  
  404.     
  405.     def getpreferredencoding(do_setlocale = True):
  406.         if do_setlocale:
  407.             oldloc = setlocale(LC_CTYPE)
  408.             
  409.             try:
  410.                 setlocale(LC_CTYPE, '')
  411.             except Error:
  412.                 pass
  413.  
  414.             result = nl_langinfo(CODESET)
  415.             setlocale(LC_CTYPE, oldloc)
  416.             return result
  417.         return None(CODESET)
  418.  
  419. locale_encoding_alias = {
  420.     '437': 'C',
  421.     'c': 'C',
  422.     'en': 'ISO8859-1',
  423.     'jis': 'JIS7',
  424.     'jis7': 'JIS7',
  425.     'ajec': 'eucJP',
  426.     'ascii': 'ISO8859-1',
  427.     'latin_1': 'ISO8859-1',
  428.     'iso8859_1': 'ISO8859-1',
  429.     'iso8859_10': 'ISO8859-10',
  430.     'iso8859_11': 'ISO8859-11',
  431.     'iso8859_13': 'ISO8859-13',
  432.     'iso8859_14': 'ISO8859-14',
  433.     'iso8859_15': 'ISO8859-15',
  434.     'iso8859_16': 'ISO8859-16',
  435.     'iso8859_2': 'ISO8859-2',
  436.     'iso8859_3': 'ISO8859-3',
  437.     'iso8859_4': 'ISO8859-4',
  438.     'iso8859_5': 'ISO8859-5',
  439.     'iso8859_6': 'ISO8859-6',
  440.     'iso8859_7': 'ISO8859-7',
  441.     'iso8859_8': 'ISO8859-8',
  442.     'iso8859_9': 'ISO8859-9',
  443.     'iso2022_jp': 'JIS7',
  444.     'shift_jis': 'SJIS',
  445.     'tactis': 'TACTIS',
  446.     'euc_jp': 'eucJP',
  447.     'euc_kr': 'eucKR',
  448.     'utf_8': 'UTF8',
  449.     'koi8_r': 'KOI8-R',
  450.     'koi8_u': 'KOI8-U' }
  451. locale_alias = {
  452.     'a3': 'a3_AZ.KOI8-C',
  453.     'a3_az': 'a3_AZ.KOI8-C',
  454.     'a3_az.koi8c': 'a3_AZ.KOI8-C',
  455.     'af': 'af_ZA.ISO8859-1',
  456.     'af_za': 'af_ZA.ISO8859-1',
  457.     'af_za.iso88591': 'af_ZA.ISO8859-1',
  458.     'am': 'am_ET.UTF-8',
  459.     'am_et': 'am_ET.UTF-8',
  460.     'american': 'en_US.ISO8859-1',
  461.     'american.iso88591': 'en_US.ISO8859-1',
  462.     'ar': 'ar_AA.ISO8859-6',
  463.     'ar_aa': 'ar_AA.ISO8859-6',
  464.     'ar_aa.iso88596': 'ar_AA.ISO8859-6',
  465.     'ar_ae': 'ar_AE.ISO8859-6',
  466.     'ar_ae.iso88596': 'ar_AE.ISO8859-6',
  467.     'ar_bh': 'ar_BH.ISO8859-6',
  468.     'ar_bh.iso88596': 'ar_BH.ISO8859-6',
  469.     'ar_dz': 'ar_DZ.ISO8859-6',
  470.     'ar_dz.iso88596': 'ar_DZ.ISO8859-6',
  471.     'ar_eg': 'ar_EG.ISO8859-6',
  472.     'ar_eg.iso88596': 'ar_EG.ISO8859-6',
  473.     'ar_iq': 'ar_IQ.ISO8859-6',
  474.     'ar_iq.iso88596': 'ar_IQ.ISO8859-6',
  475.     'ar_jo': 'ar_JO.ISO8859-6',
  476.     'ar_jo.iso88596': 'ar_JO.ISO8859-6',
  477.     'ar_kw': 'ar_KW.ISO8859-6',
  478.     'ar_kw.iso88596': 'ar_KW.ISO8859-6',
  479.     'ar_lb': 'ar_LB.ISO8859-6',
  480.     'ar_lb.iso88596': 'ar_LB.ISO8859-6',
  481.     'ar_ly': 'ar_LY.ISO8859-6',
  482.     'ar_ly.iso88596': 'ar_LY.ISO8859-6',
  483.     'ar_ma': 'ar_MA.ISO8859-6',
  484.     'ar_ma.iso88596': 'ar_MA.ISO8859-6',
  485.     'ar_om': 'ar_OM.ISO8859-6',
  486.     'ar_om.iso88596': 'ar_OM.ISO8859-6',
  487.     'ar_qa': 'ar_QA.ISO8859-6',
  488.     'ar_qa.iso88596': 'ar_QA.ISO8859-6',
  489.     'ar_sa': 'ar_SA.ISO8859-6',
  490.     'ar_sa.iso88596': 'ar_SA.ISO8859-6',
  491.     'ar_sd': 'ar_SD.ISO8859-6',
  492.     'ar_sd.iso88596': 'ar_SD.ISO8859-6',
  493.     'ar_sy': 'ar_SY.ISO8859-6',
  494.     'ar_sy.iso88596': 'ar_SY.ISO8859-6',
  495.     'ar_tn': 'ar_TN.ISO8859-6',
  496.     'ar_tn.iso88596': 'ar_TN.ISO8859-6',
  497.     'ar_ye': 'ar_YE.ISO8859-6',
  498.     'ar_ye.iso88596': 'ar_YE.ISO8859-6',
  499.     'arabic': 'ar_AA.ISO8859-6',
  500.     'arabic.iso88596': 'ar_AA.ISO8859-6',
  501.     'as': 'as_IN.UTF-8',
  502.     'az': 'az_AZ.ISO8859-9E',
  503.     'az_az': 'az_AZ.ISO8859-9E',
  504.     'az_az.iso88599e': 'az_AZ.ISO8859-9E',
  505.     'be': 'be_BY.CP1251',
  506.     'be@latin': 'be_BY.UTF-8@latin',
  507.     'be_by': 'be_BY.CP1251',
  508.     'be_by.cp1251': 'be_BY.CP1251',
  509.     'be_by.microsoftcp1251': 'be_BY.CP1251',
  510.     'be_by.utf8@latin': 'be_BY.UTF-8@latin',
  511.     'be_by@latin': 'be_BY.UTF-8@latin',
  512.     'bg': 'bg_BG.CP1251',
  513.     'bg_bg': 'bg_BG.CP1251',
  514.     'bg_bg.cp1251': 'bg_BG.CP1251',
  515.     'bg_bg.iso88595': 'bg_BG.ISO8859-5',
  516.     'bg_bg.koi8r': 'bg_BG.KOI8-R',
  517.     'bg_bg.microsoftcp1251': 'bg_BG.CP1251',
  518.     'bn_in': 'bn_IN.UTF-8',
  519.     'bokmal': 'nb_NO.ISO8859-1',
  520.     'bokm\xe5l': 'nb_NO.ISO8859-1',
  521.     'br': 'br_FR.ISO8859-1',
  522.     'br_fr': 'br_FR.ISO8859-1',
  523.     'br_fr.iso88591': 'br_FR.ISO8859-1',
  524.     'br_fr.iso885914': 'br_FR.ISO8859-14',
  525.     'br_fr.iso885915': 'br_FR.ISO8859-15',
  526.     'br_fr.iso885915@euro': 'br_FR.ISO8859-15',
  527.     'br_fr.utf8@euro': 'br_FR.UTF-8',
  528.     'br_fr@euro': 'br_FR.ISO8859-15',
  529.     'bs': 'bs_BA.ISO8859-2',
  530.     'bs_ba': 'bs_BA.ISO8859-2',
  531.     'bs_ba.iso88592': 'bs_BA.ISO8859-2',
  532.     'bulgarian': 'bg_BG.CP1251',
  533.     'c': 'C',
  534.     'c-french': 'fr_CA.ISO8859-1',
  535.     'c-french.iso88591': 'fr_CA.ISO8859-1',
  536.     'c.en': 'C',
  537.     'c.iso88591': 'en_US.ISO8859-1',
  538.     'c_c': 'C',
  539.     'c_c.c': 'C',
  540.     'ca': 'ca_ES.ISO8859-1',
  541.     'ca_ad': 'ca_AD.ISO8859-1',
  542.     'ca_ad.iso88591': 'ca_AD.ISO8859-1',
  543.     'ca_ad.iso885915': 'ca_AD.ISO8859-15',
  544.     'ca_ad.iso885915@euro': 'ca_AD.ISO8859-15',
  545.     'ca_ad.utf8@euro': 'ca_AD.UTF-8',
  546.     'ca_ad@euro': 'ca_AD.ISO8859-15',
  547.     'ca_es': 'ca_ES.ISO8859-1',
  548.     'ca_es.iso88591': 'ca_ES.ISO8859-1',
  549.     'ca_es.iso885915': 'ca_ES.ISO8859-15',
  550.     'ca_es.iso885915@euro': 'ca_ES.ISO8859-15',
  551.     'ca_es.utf8@euro': 'ca_ES.UTF-8',
  552.     'ca_es@euro': 'ca_ES.ISO8859-15',
  553.     'ca_fr': 'ca_FR.ISO8859-1',
  554.     'ca_fr.iso88591': 'ca_FR.ISO8859-1',
  555.     'ca_fr.iso885915': 'ca_FR.ISO8859-15',
  556.     'ca_fr.iso885915@euro': 'ca_FR.ISO8859-15',
  557.     'ca_fr.utf8@euro': 'ca_FR.UTF-8',
  558.     'ca_fr@euro': 'ca_FR.ISO8859-15',
  559.     'ca_it': 'ca_IT.ISO8859-1',
  560.     'ca_it.iso88591': 'ca_IT.ISO8859-1',
  561.     'ca_it.iso885915': 'ca_IT.ISO8859-15',
  562.     'ca_it.iso885915@euro': 'ca_IT.ISO8859-15',
  563.     'ca_it.utf8@euro': 'ca_IT.UTF-8',
  564.     'ca_it@euro': 'ca_IT.ISO8859-15',
  565.     'catalan': 'ca_ES.ISO8859-1',
  566.     'cextend': 'en_US.ISO8859-1',
  567.     'cextend.en': 'en_US.ISO8859-1',
  568.     'chinese-s': 'zh_CN.eucCN',
  569.     'chinese-t': 'zh_TW.eucTW',
  570.     'croatian': 'hr_HR.ISO8859-2',
  571.     'cs': 'cs_CZ.ISO8859-2',
  572.     'cs_cs': 'cs_CZ.ISO8859-2',
  573.     'cs_cs.iso88592': 'cs_CS.ISO8859-2',
  574.     'cs_cz': 'cs_CZ.ISO8859-2',
  575.     'cs_cz.iso88592': 'cs_CZ.ISO8859-2',
  576.     'cy': 'cy_GB.ISO8859-1',
  577.     'cy_gb': 'cy_GB.ISO8859-1',
  578.     'cy_gb.iso88591': 'cy_GB.ISO8859-1',
  579.     'cy_gb.iso885914': 'cy_GB.ISO8859-14',
  580.     'cy_gb.iso885915': 'cy_GB.ISO8859-15',
  581.     'cy_gb@euro': 'cy_GB.ISO8859-15',
  582.     'cz': 'cs_CZ.ISO8859-2',
  583.     'cz_cz': 'cs_CZ.ISO8859-2',
  584.     'czech': 'cs_CZ.ISO8859-2',
  585.     'da': 'da_DK.ISO8859-1',
  586.     'da.iso885915': 'da_DK.ISO8859-15',
  587.     'da_dk': 'da_DK.ISO8859-1',
  588.     'da_dk.88591': 'da_DK.ISO8859-1',
  589.     'da_dk.885915': 'da_DK.ISO8859-15',
  590.     'da_dk.iso88591': 'da_DK.ISO8859-1',
  591.     'da_dk.iso885915': 'da_DK.ISO8859-15',
  592.     'da_dk@euro': 'da_DK.ISO8859-15',
  593.     'danish': 'da_DK.ISO8859-1',
  594.     'danish.iso88591': 'da_DK.ISO8859-1',
  595.     'dansk': 'da_DK.ISO8859-1',
  596.     'de': 'de_DE.ISO8859-1',
  597.     'de.iso885915': 'de_DE.ISO8859-15',
  598.     'de_at': 'de_AT.ISO8859-1',
  599.     'de_at.iso88591': 'de_AT.ISO8859-1',
  600.     'de_at.iso885915': 'de_AT.ISO8859-15',
  601.     'de_at.iso885915@euro': 'de_AT.ISO8859-15',
  602.     'de_at.utf8@euro': 'de_AT.UTF-8',
  603.     'de_at@euro': 'de_AT.ISO8859-15',
  604.     'de_be': 'de_BE.ISO8859-1',
  605.     'de_be.iso88591': 'de_BE.ISO8859-1',
  606.     'de_be.iso885915': 'de_BE.ISO8859-15',
  607.     'de_be.iso885915@euro': 'de_BE.ISO8859-15',
  608.     'de_be.utf8@euro': 'de_BE.UTF-8',
  609.     'de_be@euro': 'de_BE.ISO8859-15',
  610.     'de_ch': 'de_CH.ISO8859-1',
  611.     'de_ch.iso88591': 'de_CH.ISO8859-1',
  612.     'de_ch.iso885915': 'de_CH.ISO8859-15',
  613.     'de_ch@euro': 'de_CH.ISO8859-15',
  614.     'de_de': 'de_DE.ISO8859-1',
  615.     'de_de.88591': 'de_DE.ISO8859-1',
  616.     'de_de.885915': 'de_DE.ISO8859-15',
  617.     'de_de.885915@euro': 'de_DE.ISO8859-15',
  618.     'de_de.iso88591': 'de_DE.ISO8859-1',
  619.     'de_de.iso885915': 'de_DE.ISO8859-15',
  620.     'de_de.iso885915@euro': 'de_DE.ISO8859-15',
  621.     'de_de.utf8@euro': 'de_DE.UTF-8',
  622.     'de_de@euro': 'de_DE.ISO8859-15',
  623.     'de_lu': 'de_LU.ISO8859-1',
  624.     'de_lu.iso88591': 'de_LU.ISO8859-1',
  625.     'de_lu.iso885915': 'de_LU.ISO8859-15',
  626.     'de_lu.iso885915@euro': 'de_LU.ISO8859-15',
  627.     'de_lu.utf8@euro': 'de_LU.UTF-8',
  628.     'de_lu@euro': 'de_LU.ISO8859-15',
  629.     'deutsch': 'de_DE.ISO8859-1',
  630.     'dutch': 'nl_NL.ISO8859-1',
  631.     'dutch.iso88591': 'nl_BE.ISO8859-1',
  632.     'ee': 'ee_EE.ISO8859-4',
  633.     'ee_ee': 'ee_EE.ISO8859-4',
  634.     'ee_ee.iso88594': 'ee_EE.ISO8859-4',
  635.     'eesti': 'et_EE.ISO8859-1',
  636.     'el': 'el_GR.ISO8859-7',
  637.     'el_gr': 'el_GR.ISO8859-7',
  638.     'el_gr.iso88597': 'el_GR.ISO8859-7',
  639.     'el_gr@euro': 'el_GR.ISO8859-15',
  640.     'en': 'en_US.ISO8859-1',
  641.     'en.iso88591': 'en_US.ISO8859-1',
  642.     'en_au': 'en_AU.ISO8859-1',
  643.     'en_au.iso88591': 'en_AU.ISO8859-1',
  644.     'en_be': 'en_BE.ISO8859-1',
  645.     'en_be@euro': 'en_BE.ISO8859-15',
  646.     'en_bw': 'en_BW.ISO8859-1',
  647.     'en_bw.iso88591': 'en_BW.ISO8859-1',
  648.     'en_ca': 'en_CA.ISO8859-1',
  649.     'en_ca.iso88591': 'en_CA.ISO8859-1',
  650.     'en_gb': 'en_GB.ISO8859-1',
  651.     'en_gb.88591': 'en_GB.ISO8859-1',
  652.     'en_gb.iso88591': 'en_GB.ISO8859-1',
  653.     'en_gb.iso885915': 'en_GB.ISO8859-15',
  654.     'en_gb@euro': 'en_GB.ISO8859-15',
  655.     'en_hk': 'en_HK.ISO8859-1',
  656.     'en_hk.iso88591': 'en_HK.ISO8859-1',
  657.     'en_ie': 'en_IE.ISO8859-1',
  658.     'en_ie.iso88591': 'en_IE.ISO8859-1',
  659.     'en_ie.iso885915': 'en_IE.ISO8859-15',
  660.     'en_ie.iso885915@euro': 'en_IE.ISO8859-15',
  661.     'en_ie.utf8@euro': 'en_IE.UTF-8',
  662.     'en_ie@euro': 'en_IE.ISO8859-15',
  663.     'en_in': 'en_IN.ISO8859-1',
  664.     'en_nz': 'en_NZ.ISO8859-1',
  665.     'en_nz.iso88591': 'en_NZ.ISO8859-1',
  666.     'en_ph': 'en_PH.ISO8859-1',
  667.     'en_ph.iso88591': 'en_PH.ISO8859-1',
  668.     'en_sg': 'en_SG.ISO8859-1',
  669.     'en_sg.iso88591': 'en_SG.ISO8859-1',
  670.     'en_uk': 'en_GB.ISO8859-1',
  671.     'en_us': 'en_US.ISO8859-1',
  672.     'en_us.88591': 'en_US.ISO8859-1',
  673.     'en_us.885915': 'en_US.ISO8859-15',
  674.     'en_us.iso88591': 'en_US.ISO8859-1',
  675.     'en_us.iso885915': 'en_US.ISO8859-15',
  676.     'en_us.iso885915@euro': 'en_US.ISO8859-15',
  677.     'en_us@euro': 'en_US.ISO8859-15',
  678.     'en_us@euro@euro': 'en_US.ISO8859-15',
  679.     'en_za': 'en_ZA.ISO8859-1',
  680.     'en_za.88591': 'en_ZA.ISO8859-1',
  681.     'en_za.iso88591': 'en_ZA.ISO8859-1',
  682.     'en_za.iso885915': 'en_ZA.ISO8859-15',
  683.     'en_za@euro': 'en_ZA.ISO8859-15',
  684.     'en_zw': 'en_ZW.ISO8859-1',
  685.     'en_zw.iso88591': 'en_ZW.ISO8859-1',
  686.     'eng_gb': 'en_GB.ISO8859-1',
  687.     'eng_gb.8859': 'en_GB.ISO8859-1',
  688.     'english': 'en_EN.ISO8859-1',
  689.     'english.iso88591': 'en_EN.ISO8859-1',
  690.     'english_uk': 'en_GB.ISO8859-1',
  691.     'english_uk.8859': 'en_GB.ISO8859-1',
  692.     'english_united-states': 'en_US.ISO8859-1',
  693.     'english_united-states.437': 'C',
  694.     'english_us': 'en_US.ISO8859-1',
  695.     'english_us.8859': 'en_US.ISO8859-1',
  696.     'english_us.ascii': 'en_US.ISO8859-1',
  697.     'eo': 'eo_XX.ISO8859-3',
  698.     'eo_eo': 'eo_EO.ISO8859-3',
  699.     'eo_eo.iso88593': 'eo_EO.ISO8859-3',
  700.     'eo_xx': 'eo_XX.ISO8859-3',
  701.     'eo_xx.iso88593': 'eo_XX.ISO8859-3',
  702.     'es': 'es_ES.ISO8859-1',
  703.     'es_ar': 'es_AR.ISO8859-1',
  704.     'es_ar.iso88591': 'es_AR.ISO8859-1',
  705.     'es_bo': 'es_BO.ISO8859-1',
  706.     'es_bo.iso88591': 'es_BO.ISO8859-1',
  707.     'es_cl': 'es_CL.ISO8859-1',
  708.     'es_cl.iso88591': 'es_CL.ISO8859-1',
  709.     'es_co': 'es_CO.ISO8859-1',
  710.     'es_co.iso88591': 'es_CO.ISO8859-1',
  711.     'es_cr': 'es_CR.ISO8859-1',
  712.     'es_cr.iso88591': 'es_CR.ISO8859-1',
  713.     'es_do': 'es_DO.ISO8859-1',
  714.     'es_do.iso88591': 'es_DO.ISO8859-1',
  715.     'es_ec': 'es_EC.ISO8859-1',
  716.     'es_ec.iso88591': 'es_EC.ISO8859-1',
  717.     'es_es': 'es_ES.ISO8859-1',
  718.     'es_es.88591': 'es_ES.ISO8859-1',
  719.     'es_es.iso88591': 'es_ES.ISO8859-1',
  720.     'es_es.iso885915': 'es_ES.ISO8859-15',
  721.     'es_es.iso885915@euro': 'es_ES.ISO8859-15',
  722.     'es_es.utf8@euro': 'es_ES.UTF-8',
  723.     'es_es@euro': 'es_ES.ISO8859-15',
  724.     'es_gt': 'es_GT.ISO8859-1',
  725.     'es_gt.iso88591': 'es_GT.ISO8859-1',
  726.     'es_hn': 'es_HN.ISO8859-1',
  727.     'es_hn.iso88591': 'es_HN.ISO8859-1',
  728.     'es_mx': 'es_MX.ISO8859-1',
  729.     'es_mx.iso88591': 'es_MX.ISO8859-1',
  730.     'es_ni': 'es_NI.ISO8859-1',
  731.     'es_ni.iso88591': 'es_NI.ISO8859-1',
  732.     'es_pa': 'es_PA.ISO8859-1',
  733.     'es_pa.iso88591': 'es_PA.ISO8859-1',
  734.     'es_pa.iso885915': 'es_PA.ISO8859-15',
  735.     'es_pa@euro': 'es_PA.ISO8859-15',
  736.     'es_pe': 'es_PE.ISO8859-1',
  737.     'es_pe.iso88591': 'es_PE.ISO8859-1',
  738.     'es_pe.iso885915': 'es_PE.ISO8859-15',
  739.     'es_pe@euro': 'es_PE.ISO8859-15',
  740.     'es_pr': 'es_PR.ISO8859-1',
  741.     'es_pr.iso88591': 'es_PR.ISO8859-1',
  742.     'es_py': 'es_PY.ISO8859-1',
  743.     'es_py.iso88591': 'es_PY.ISO8859-1',
  744.     'es_py.iso885915': 'es_PY.ISO8859-15',
  745.     'es_py@euro': 'es_PY.ISO8859-15',
  746.     'es_sv': 'es_SV.ISO8859-1',
  747.     'es_sv.iso88591': 'es_SV.ISO8859-1',
  748.     'es_sv.iso885915': 'es_SV.ISO8859-15',
  749.     'es_sv@euro': 'es_SV.ISO8859-15',
  750.     'es_us': 'es_US.ISO8859-1',
  751.     'es_us.iso88591': 'es_US.ISO8859-1',
  752.     'es_uy': 'es_UY.ISO8859-1',
  753.     'es_uy.iso88591': 'es_UY.ISO8859-1',
  754.     'es_uy.iso885915': 'es_UY.ISO8859-15',
  755.     'es_uy@euro': 'es_UY.ISO8859-15',
  756.     'es_ve': 'es_VE.ISO8859-1',
  757.     'es_ve.iso88591': 'es_VE.ISO8859-1',
  758.     'es_ve.iso885915': 'es_VE.ISO8859-15',
  759.     'es_ve@euro': 'es_VE.ISO8859-15',
  760.     'estonian': 'et_EE.ISO8859-1',
  761.     'et': 'et_EE.ISO8859-15',
  762.     'et_ee': 'et_EE.ISO8859-15',
  763.     'et_ee.iso88591': 'et_EE.ISO8859-1',
  764.     'et_ee.iso885913': 'et_EE.ISO8859-13',
  765.     'et_ee.iso885915': 'et_EE.ISO8859-15',
  766.     'et_ee.iso88594': 'et_EE.ISO8859-4',
  767.     'et_ee@euro': 'et_EE.ISO8859-15',
  768.     'eu': 'eu_ES.ISO8859-1',
  769.     'eu_es': 'eu_ES.ISO8859-1',
  770.     'eu_es.iso88591': 'eu_ES.ISO8859-1',
  771.     'eu_es.iso885915': 'eu_ES.ISO8859-15',
  772.     'eu_es.iso885915@euro': 'eu_ES.ISO8859-15',
  773.     'eu_es.utf8@euro': 'eu_ES.UTF-8',
  774.     'eu_es@euro': 'eu_ES.ISO8859-15',
  775.     'fa': 'fa_IR.UTF-8',
  776.     'fa_ir': 'fa_IR.UTF-8',
  777.     'fa_ir.isiri3342': 'fa_IR.ISIRI-3342',
  778.     'fi': 'fi_FI.ISO8859-15',
  779.     'fi.iso885915': 'fi_FI.ISO8859-15',
  780.     'fi_fi': 'fi_FI.ISO8859-15',
  781.     'fi_fi.88591': 'fi_FI.ISO8859-1',
  782.     'fi_fi.iso88591': 'fi_FI.ISO8859-1',
  783.     'fi_fi.iso885915': 'fi_FI.ISO8859-15',
  784.     'fi_fi.iso885915@euro': 'fi_FI.ISO8859-15',
  785.     'fi_fi.utf8@euro': 'fi_FI.UTF-8',
  786.     'fi_fi@euro': 'fi_FI.ISO8859-15',
  787.     'finnish': 'fi_FI.ISO8859-1',
  788.     'finnish.iso88591': 'fi_FI.ISO8859-1',
  789.     'fo': 'fo_FO.ISO8859-1',
  790.     'fo_fo': 'fo_FO.ISO8859-1',
  791.     'fo_fo.iso88591': 'fo_FO.ISO8859-1',
  792.     'fo_fo.iso885915': 'fo_FO.ISO8859-15',
  793.     'fo_fo@euro': 'fo_FO.ISO8859-15',
  794.     'fr': 'fr_FR.ISO8859-1',
  795.     'fr.iso885915': 'fr_FR.ISO8859-15',
  796.     'fr_be': 'fr_BE.ISO8859-1',
  797.     'fr_be.88591': 'fr_BE.ISO8859-1',
  798.     'fr_be.iso88591': 'fr_BE.ISO8859-1',
  799.     'fr_be.iso885915': 'fr_BE.ISO8859-15',
  800.     'fr_be.iso885915@euro': 'fr_BE.ISO8859-15',
  801.     'fr_be.utf8@euro': 'fr_BE.UTF-8',
  802.     'fr_be@euro': 'fr_BE.ISO8859-15',
  803.     'fr_ca': 'fr_CA.ISO8859-1',
  804.     'fr_ca.88591': 'fr_CA.ISO8859-1',
  805.     'fr_ca.iso88591': 'fr_CA.ISO8859-1',
  806.     'fr_ca.iso885915': 'fr_CA.ISO8859-15',
  807.     'fr_ca@euro': 'fr_CA.ISO8859-15',
  808.     'fr_ch': 'fr_CH.ISO8859-1',
  809.     'fr_ch.88591': 'fr_CH.ISO8859-1',
  810.     'fr_ch.iso88591': 'fr_CH.ISO8859-1',
  811.     'fr_ch.iso885915': 'fr_CH.ISO8859-15',
  812.     'fr_ch@euro': 'fr_CH.ISO8859-15',
  813.     'fr_fr': 'fr_FR.ISO8859-1',
  814.     'fr_fr.88591': 'fr_FR.ISO8859-1',
  815.     'fr_fr.iso88591': 'fr_FR.ISO8859-1',
  816.     'fr_fr.iso885915': 'fr_FR.ISO8859-15',
  817.     'fr_fr.iso885915@euro': 'fr_FR.ISO8859-15',
  818.     'fr_fr.utf8@euro': 'fr_FR.UTF-8',
  819.     'fr_fr@euro': 'fr_FR.ISO8859-15',
  820.     'fr_lu': 'fr_LU.ISO8859-1',
  821.     'fr_lu.88591': 'fr_LU.ISO8859-1',
  822.     'fr_lu.iso88591': 'fr_LU.ISO8859-1',
  823.     'fr_lu.iso885915': 'fr_LU.ISO8859-15',
  824.     'fr_lu.iso885915@euro': 'fr_LU.ISO8859-15',
  825.     'fr_lu.utf8@euro': 'fr_LU.UTF-8',
  826.     'fr_lu@euro': 'fr_LU.ISO8859-15',
  827.     'fran\xe7ais': 'fr_FR.ISO8859-1',
  828.     'fre_fr': 'fr_FR.ISO8859-1',
  829.     'fre_fr.8859': 'fr_FR.ISO8859-1',
  830.     'french': 'fr_FR.ISO8859-1',
  831.     'french.iso88591': 'fr_CH.ISO8859-1',
  832.     'french_france': 'fr_FR.ISO8859-1',
  833.     'french_france.8859': 'fr_FR.ISO8859-1',
  834.     'ga': 'ga_IE.ISO8859-1',
  835.     'ga_ie': 'ga_IE.ISO8859-1',
  836.     'ga_ie.iso88591': 'ga_IE.ISO8859-1',
  837.     'ga_ie.iso885914': 'ga_IE.ISO8859-14',
  838.     'ga_ie.iso885915': 'ga_IE.ISO8859-15',
  839.     'ga_ie.iso885915@euro': 'ga_IE.ISO8859-15',
  840.     'ga_ie.utf8@euro': 'ga_IE.UTF-8',
  841.     'ga_ie@euro': 'ga_IE.ISO8859-15',
  842.     'galego': 'gl_ES.ISO8859-1',
  843.     'galician': 'gl_ES.ISO8859-1',
  844.     'gd': 'gd_GB.ISO8859-1',
  845.     'gd_gb': 'gd_GB.ISO8859-1',
  846.     'gd_gb.iso88591': 'gd_GB.ISO8859-1',
  847.     'gd_gb.iso885914': 'gd_GB.ISO8859-14',
  848.     'gd_gb.iso885915': 'gd_GB.ISO8859-15',
  849.     'gd_gb@euro': 'gd_GB.ISO8859-15',
  850.     'ger_de': 'de_DE.ISO8859-1',
  851.     'ger_de.8859': 'de_DE.ISO8859-1',
  852.     'german': 'de_DE.ISO8859-1',
  853.     'german.iso88591': 'de_CH.ISO8859-1',
  854.     'german_germany': 'de_DE.ISO8859-1',
  855.     'german_germany.8859': 'de_DE.ISO8859-1',
  856.     'gl': 'gl_ES.ISO8859-1',
  857.     'gl_es': 'gl_ES.ISO8859-1',
  858.     'gl_es.iso88591': 'gl_ES.ISO8859-1',
  859.     'gl_es.iso885915': 'gl_ES.ISO8859-15',
  860.     'gl_es.iso885915@euro': 'gl_ES.ISO8859-15',
  861.     'gl_es.utf8@euro': 'gl_ES.UTF-8',
  862.     'gl_es@euro': 'gl_ES.ISO8859-15',
  863.     'greek': 'el_GR.ISO8859-7',
  864.     'greek.iso88597': 'el_GR.ISO8859-7',
  865.     'gu_in': 'gu_IN.UTF-8',
  866.     'gv': 'gv_GB.ISO8859-1',
  867.     'gv_gb': 'gv_GB.ISO8859-1',
  868.     'gv_gb.iso88591': 'gv_GB.ISO8859-1',
  869.     'gv_gb.iso885914': 'gv_GB.ISO8859-14',
  870.     'gv_gb.iso885915': 'gv_GB.ISO8859-15',
  871.     'gv_gb@euro': 'gv_GB.ISO8859-15',
  872.     'he': 'he_IL.ISO8859-8',
  873.     'he_il': 'he_IL.ISO8859-8',
  874.     'he_il.cp1255': 'he_IL.CP1255',
  875.     'he_il.iso88598': 'he_IL.ISO8859-8',
  876.     'he_il.microsoftcp1255': 'he_IL.CP1255',
  877.     'hebrew': 'iw_IL.ISO8859-8',
  878.     'hebrew.iso88598': 'iw_IL.ISO8859-8',
  879.     'hi': 'hi_IN.ISCII-DEV',
  880.     'hi_in': 'hi_IN.ISCII-DEV',
  881.     'hi_in.isciidev': 'hi_IN.ISCII-DEV',
  882.     'hne': 'hne_IN.UTF-8',
  883.     'hr': 'hr_HR.ISO8859-2',
  884.     'hr_hr': 'hr_HR.ISO8859-2',
  885.     'hr_hr.iso88592': 'hr_HR.ISO8859-2',
  886.     'hrvatski': 'hr_HR.ISO8859-2',
  887.     'hu': 'hu_HU.ISO8859-2',
  888.     'hu_hu': 'hu_HU.ISO8859-2',
  889.     'hu_hu.iso88592': 'hu_HU.ISO8859-2',
  890.     'hungarian': 'hu_HU.ISO8859-2',
  891.     'icelandic': 'is_IS.ISO8859-1',
  892.     'icelandic.iso88591': 'is_IS.ISO8859-1',
  893.     'id': 'id_ID.ISO8859-1',
  894.     'id_id': 'id_ID.ISO8859-1',
  895.     'in': 'id_ID.ISO8859-1',
  896.     'in_id': 'id_ID.ISO8859-1',
  897.     'is': 'is_IS.ISO8859-1',
  898.     'is_is': 'is_IS.ISO8859-1',
  899.     'is_is.iso88591': 'is_IS.ISO8859-1',
  900.     'is_is.iso885915': 'is_IS.ISO8859-15',
  901.     'is_is@euro': 'is_IS.ISO8859-15',
  902.     'iso-8859-1': 'en_US.ISO8859-1',
  903.     'iso-8859-15': 'en_US.ISO8859-15',
  904.     'iso8859-1': 'en_US.ISO8859-1',
  905.     'iso8859-15': 'en_US.ISO8859-15',
  906.     'iso_8859_1': 'en_US.ISO8859-1',
  907.     'iso_8859_15': 'en_US.ISO8859-15',
  908.     'it': 'it_IT.ISO8859-1',
  909.     'it.iso885915': 'it_IT.ISO8859-15',
  910.     'it_ch': 'it_CH.ISO8859-1',
  911.     'it_ch.iso88591': 'it_CH.ISO8859-1',
  912.     'it_ch.iso885915': 'it_CH.ISO8859-15',
  913.     'it_ch@euro': 'it_CH.ISO8859-15',
  914.     'it_it': 'it_IT.ISO8859-1',
  915.     'it_it.88591': 'it_IT.ISO8859-1',
  916.     'it_it.iso88591': 'it_IT.ISO8859-1',
  917.     'it_it.iso885915': 'it_IT.ISO8859-15',
  918.     'it_it.iso885915@euro': 'it_IT.ISO8859-15',
  919.     'it_it.utf8@euro': 'it_IT.UTF-8',
  920.     'it_it@euro': 'it_IT.ISO8859-15',
  921.     'italian': 'it_IT.ISO8859-1',
  922.     'italian.iso88591': 'it_IT.ISO8859-1',
  923.     'iu': 'iu_CA.NUNACOM-8',
  924.     'iu_ca': 'iu_CA.NUNACOM-8',
  925.     'iu_ca.nunacom8': 'iu_CA.NUNACOM-8',
  926.     'iw': 'he_IL.ISO8859-8',
  927.     'iw_il': 'he_IL.ISO8859-8',
  928.     'iw_il.iso88598': 'he_IL.ISO8859-8',
  929.     'ja': 'ja_JP.eucJP',
  930.     'ja.jis': 'ja_JP.JIS7',
  931.     'ja.sjis': 'ja_JP.SJIS',
  932.     'ja_jp': 'ja_JP.eucJP',
  933.     'ja_jp.ajec': 'ja_JP.eucJP',
  934.     'ja_jp.euc': 'ja_JP.eucJP',
  935.     'ja_jp.eucjp': 'ja_JP.eucJP',
  936.     'ja_jp.iso-2022-jp': 'ja_JP.JIS7',
  937.     'ja_jp.iso2022jp': 'ja_JP.JIS7',
  938.     'ja_jp.jis': 'ja_JP.JIS7',
  939.     'ja_jp.jis7': 'ja_JP.JIS7',
  940.     'ja_jp.mscode': 'ja_JP.SJIS',
  941.     'ja_jp.pck': 'ja_JP.SJIS',
  942.     'ja_jp.sjis': 'ja_JP.SJIS',
  943.     'ja_jp.ujis': 'ja_JP.eucJP',
  944.     'japan': 'ja_JP.eucJP',
  945.     'japanese': 'ja_JP.eucJP',
  946.     'japanese-euc': 'ja_JP.eucJP',
  947.     'japanese.euc': 'ja_JP.eucJP',
  948.     'japanese.sjis': 'ja_JP.SJIS',
  949.     'jp_jp': 'ja_JP.eucJP',
  950.     'ka': 'ka_GE.GEORGIAN-ACADEMY',
  951.     'ka_ge': 'ka_GE.GEORGIAN-ACADEMY',
  952.     'ka_ge.georgianacademy': 'ka_GE.GEORGIAN-ACADEMY',
  953.     'ka_ge.georgianps': 'ka_GE.GEORGIAN-PS',
  954.     'ka_ge.georgianrs': 'ka_GE.GEORGIAN-ACADEMY',
  955.     'kl': 'kl_GL.ISO8859-1',
  956.     'kl_gl': 'kl_GL.ISO8859-1',
  957.     'kl_gl.iso88591': 'kl_GL.ISO8859-1',
  958.     'kl_gl.iso885915': 'kl_GL.ISO8859-15',
  959.     'kl_gl@euro': 'kl_GL.ISO8859-15',
  960.     'km_kh': 'km_KH.UTF-8',
  961.     'kn': 'kn_IN.UTF-8',
  962.     'kn_in': 'kn_IN.UTF-8',
  963.     'ko': 'ko_KR.eucKR',
  964.     'ko_kr': 'ko_KR.eucKR',
  965.     'ko_kr.euc': 'ko_KR.eucKR',
  966.     'ko_kr.euckr': 'ko_KR.eucKR',
  967.     'korean': 'ko_KR.eucKR',
  968.     'korean.euc': 'ko_KR.eucKR',
  969.     'ks': 'ks_IN.UTF-8',
  970.     'ks_in@devanagari': 'ks_IN@devanagari.UTF-8',
  971.     'kw': 'kw_GB.ISO8859-1',
  972.     'kw_gb': 'kw_GB.ISO8859-1',
  973.     'kw_gb.iso88591': 'kw_GB.ISO8859-1',
  974.     'kw_gb.iso885914': 'kw_GB.ISO8859-14',
  975.     'kw_gb.iso885915': 'kw_GB.ISO8859-15',
  976.     'kw_gb@euro': 'kw_GB.ISO8859-15',
  977.     'ky': 'ky_KG.UTF-8',
  978.     'ky_kg': 'ky_KG.UTF-8',
  979.     'lithuanian': 'lt_LT.ISO8859-13',
  980.     'lo': 'lo_LA.MULELAO-1',
  981.     'lo_la': 'lo_LA.MULELAO-1',
  982.     'lo_la.cp1133': 'lo_LA.IBM-CP1133',
  983.     'lo_la.ibmcp1133': 'lo_LA.IBM-CP1133',
  984.     'lo_la.mulelao1': 'lo_LA.MULELAO-1',
  985.     'lt': 'lt_LT.ISO8859-13',
  986.     'lt_lt': 'lt_LT.ISO8859-13',
  987.     'lt_lt.iso885913': 'lt_LT.ISO8859-13',
  988.     'lt_lt.iso88594': 'lt_LT.ISO8859-4',
  989.     'lv': 'lv_LV.ISO8859-13',
  990.     'lv_lv': 'lv_LV.ISO8859-13',
  991.     'lv_lv.iso885913': 'lv_LV.ISO8859-13',
  992.     'lv_lv.iso88594': 'lv_LV.ISO8859-4',
  993.     'mai': 'mai_IN.UTF-8',
  994.     'mi': 'mi_NZ.ISO8859-1',
  995.     'mi_nz': 'mi_NZ.ISO8859-1',
  996.     'mi_nz.iso88591': 'mi_NZ.ISO8859-1',
  997.     'mk': 'mk_MK.ISO8859-5',
  998.     'mk_mk': 'mk_MK.ISO8859-5',
  999.     'mk_mk.cp1251': 'mk_MK.CP1251',
  1000.     'mk_mk.iso88595': 'mk_MK.ISO8859-5',
  1001.     'mk_mk.microsoftcp1251': 'mk_MK.CP1251',
  1002.     'ml': 'ml_IN.UTF-8',
  1003.     'mr': 'mr_IN.UTF-8',
  1004.     'mr_in': 'mr_IN.UTF-8',
  1005.     'ms': 'ms_MY.ISO8859-1',
  1006.     'ms_my': 'ms_MY.ISO8859-1',
  1007.     'ms_my.iso88591': 'ms_MY.ISO8859-1',
  1008.     'mt': 'mt_MT.ISO8859-3',
  1009.     'mt_mt': 'mt_MT.ISO8859-3',
  1010.     'mt_mt.iso88593': 'mt_MT.ISO8859-3',
  1011.     'nb': 'nb_NO.ISO8859-1',
  1012.     'nb_no': 'nb_NO.ISO8859-1',
  1013.     'nb_no.88591': 'nb_NO.ISO8859-1',
  1014.     'nb_no.iso88591': 'nb_NO.ISO8859-1',
  1015.     'nb_no.iso885915': 'nb_NO.ISO8859-15',
  1016.     'nb_no@euro': 'nb_NO.ISO8859-15',
  1017.     'nl': 'nl_NL.ISO8859-1',
  1018.     'nl.iso885915': 'nl_NL.ISO8859-15',
  1019.     'nl_be': 'nl_BE.ISO8859-1',
  1020.     'nl_be.88591': 'nl_BE.ISO8859-1',
  1021.     'nl_be.iso88591': 'nl_BE.ISO8859-1',
  1022.     'nl_be.iso885915': 'nl_BE.ISO8859-15',
  1023.     'nl_be.iso885915@euro': 'nl_BE.ISO8859-15',
  1024.     'nl_be.utf8@euro': 'nl_BE.UTF-8',
  1025.     'nl_be@euro': 'nl_BE.ISO8859-15',
  1026.     'nl_nl': 'nl_NL.ISO8859-1',
  1027.     'nl_nl.88591': 'nl_NL.ISO8859-1',
  1028.     'nl_nl.iso88591': 'nl_NL.ISO8859-1',
  1029.     'nl_nl.iso885915': 'nl_NL.ISO8859-15',
  1030.     'nl_nl.iso885915@euro': 'nl_NL.ISO8859-15',
  1031.     'nl_nl.utf8@euro': 'nl_NL.UTF-8',
  1032.     'nl_nl@euro': 'nl_NL.ISO8859-15',
  1033.     'nn': 'nn_NO.ISO8859-1',
  1034.     'nn_no': 'nn_NO.ISO8859-1',
  1035.     'nn_no.88591': 'nn_NO.ISO8859-1',
  1036.     'nn_no.iso88591': 'nn_NO.ISO8859-1',
  1037.     'nn_no.iso885915': 'nn_NO.ISO8859-15',
  1038.     'nn_no@euro': 'nn_NO.ISO8859-15',
  1039.     'no': 'no_NO.ISO8859-1',
  1040.     'no@nynorsk': 'ny_NO.ISO8859-1',
  1041.     'no_no': 'no_NO.ISO8859-1',
  1042.     'no_no.88591': 'no_NO.ISO8859-1',
  1043.     'no_no.iso88591': 'no_NO.ISO8859-1',
  1044.     'no_no.iso885915': 'no_NO.ISO8859-15',
  1045.     'no_no.iso88591@bokmal': 'no_NO.ISO8859-1',
  1046.     'no_no.iso88591@nynorsk': 'no_NO.ISO8859-1',
  1047.     'no_no@euro': 'no_NO.ISO8859-15',
  1048.     'norwegian': 'no_NO.ISO8859-1',
  1049.     'norwegian.iso88591': 'no_NO.ISO8859-1',
  1050.     'nr': 'nr_ZA.ISO8859-1',
  1051.     'nr_za': 'nr_ZA.ISO8859-1',
  1052.     'nr_za.iso88591': 'nr_ZA.ISO8859-1',
  1053.     'nso': 'nso_ZA.ISO8859-15',
  1054.     'nso_za': 'nso_ZA.ISO8859-15',
  1055.     'nso_za.iso885915': 'nso_ZA.ISO8859-15',
  1056.     'ny': 'ny_NO.ISO8859-1',
  1057.     'ny_no': 'ny_NO.ISO8859-1',
  1058.     'ny_no.88591': 'ny_NO.ISO8859-1',
  1059.     'ny_no.iso88591': 'ny_NO.ISO8859-1',
  1060.     'ny_no.iso885915': 'ny_NO.ISO8859-15',
  1061.     'ny_no@euro': 'ny_NO.ISO8859-15',
  1062.     'nynorsk': 'nn_NO.ISO8859-1',
  1063.     'oc': 'oc_FR.ISO8859-1',
  1064.     'oc_fr': 'oc_FR.ISO8859-1',
  1065.     'oc_fr.iso88591': 'oc_FR.ISO8859-1',
  1066.     'oc_fr.iso885915': 'oc_FR.ISO8859-15',
  1067.     'oc_fr@euro': 'oc_FR.ISO8859-15',
  1068.     'or': 'or_IN.UTF-8',
  1069.     'pa': 'pa_IN.UTF-8',
  1070.     'pa_in': 'pa_IN.UTF-8',
  1071.     'pd': 'pd_US.ISO8859-1',
  1072.     'pd_de': 'pd_DE.ISO8859-1',
  1073.     'pd_de.iso88591': 'pd_DE.ISO8859-1',
  1074.     'pd_de.iso885915': 'pd_DE.ISO8859-15',
  1075.     'pd_de@euro': 'pd_DE.ISO8859-15',
  1076.     'pd_us': 'pd_US.ISO8859-1',
  1077.     'pd_us.iso88591': 'pd_US.ISO8859-1',
  1078.     'pd_us.iso885915': 'pd_US.ISO8859-15',
  1079.     'pd_us@euro': 'pd_US.ISO8859-15',
  1080.     'ph': 'ph_PH.ISO8859-1',
  1081.     'ph_ph': 'ph_PH.ISO8859-1',
  1082.     'ph_ph.iso88591': 'ph_PH.ISO8859-1',
  1083.     'pl': 'pl_PL.ISO8859-2',
  1084.     'pl_pl': 'pl_PL.ISO8859-2',
  1085.     'pl_pl.iso88592': 'pl_PL.ISO8859-2',
  1086.     'polish': 'pl_PL.ISO8859-2',
  1087.     'portuguese': 'pt_PT.ISO8859-1',
  1088.     'portuguese.iso88591': 'pt_PT.ISO8859-1',
  1089.     'portuguese_brazil': 'pt_BR.ISO8859-1',
  1090.     'portuguese_brazil.8859': 'pt_BR.ISO8859-1',
  1091.     'posix': 'C',
  1092.     'posix-utf2': 'C',
  1093.     'pp': 'pp_AN.ISO8859-1',
  1094.     'pp_an': 'pp_AN.ISO8859-1',
  1095.     'pp_an.iso88591': 'pp_AN.ISO8859-1',
  1096.     'pt': 'pt_PT.ISO8859-1',
  1097.     'pt.iso885915': 'pt_PT.ISO8859-15',
  1098.     'pt_br': 'pt_BR.ISO8859-1',
  1099.     'pt_br.88591': 'pt_BR.ISO8859-1',
  1100.     'pt_br.iso88591': 'pt_BR.ISO8859-1',
  1101.     'pt_br.iso885915': 'pt_BR.ISO8859-15',
  1102.     'pt_br@euro': 'pt_BR.ISO8859-15',
  1103.     'pt_pt': 'pt_PT.ISO8859-1',
  1104.     'pt_pt.88591': 'pt_PT.ISO8859-1',
  1105.     'pt_pt.iso88591': 'pt_PT.ISO8859-1',
  1106.     'pt_pt.iso885915': 'pt_PT.ISO8859-15',
  1107.     'pt_pt.iso885915@euro': 'pt_PT.ISO8859-15',
  1108.     'pt_pt.utf8@euro': 'pt_PT.UTF-8',
  1109.     'pt_pt@euro': 'pt_PT.ISO8859-15',
  1110.     'ro': 'ro_RO.ISO8859-2',
  1111.     'ro_ro': 'ro_RO.ISO8859-2',
  1112.     'ro_ro.iso88592': 'ro_RO.ISO8859-2',
  1113.     'romanian': 'ro_RO.ISO8859-2',
  1114.     'ru': 'ru_RU.UTF-8',
  1115.     'ru.koi8r': 'ru_RU.KOI8-R',
  1116.     'ru_ru': 'ru_RU.UTF-8',
  1117.     'ru_ru.cp1251': 'ru_RU.CP1251',
  1118.     'ru_ru.iso88595': 'ru_RU.ISO8859-5',
  1119.     'ru_ru.koi8r': 'ru_RU.KOI8-R',
  1120.     'ru_ru.microsoftcp1251': 'ru_RU.CP1251',
  1121.     'ru_ua': 'ru_UA.KOI8-U',
  1122.     'ru_ua.cp1251': 'ru_UA.CP1251',
  1123.     'ru_ua.koi8u': 'ru_UA.KOI8-U',
  1124.     'ru_ua.microsoftcp1251': 'ru_UA.CP1251',
  1125.     'rumanian': 'ro_RO.ISO8859-2',
  1126.     'russian': 'ru_RU.ISO8859-5',
  1127.     'rw': 'rw_RW.ISO8859-1',
  1128.     'rw_rw': 'rw_RW.ISO8859-1',
  1129.     'rw_rw.iso88591': 'rw_RW.ISO8859-1',
  1130.     'sd': 'sd_IN@devanagari.UTF-8',
  1131.     'se_no': 'se_NO.UTF-8',
  1132.     'serbocroatian': 'sr_RS.UTF-8@latin',
  1133.     'sh': 'sr_RS.UTF-8@latin',
  1134.     'sh_ba.iso88592@bosnia': 'sr_CS.ISO8859-2',
  1135.     'sh_hr': 'sh_HR.ISO8859-2',
  1136.     'sh_hr.iso88592': 'hr_HR.ISO8859-2',
  1137.     'sh_sp': 'sr_CS.ISO8859-2',
  1138.     'sh_yu': 'sr_RS.UTF-8@latin',
  1139.     'si': 'si_LK.UTF-8',
  1140.     'si_lk': 'si_LK.UTF-8',
  1141.     'sinhala': 'si_LK.UTF-8',
  1142.     'sk': 'sk_SK.ISO8859-2',
  1143.     'sk_sk': 'sk_SK.ISO8859-2',
  1144.     'sk_sk.iso88592': 'sk_SK.ISO8859-2',
  1145.     'sl': 'sl_SI.ISO8859-2',
  1146.     'sl_cs': 'sl_CS.ISO8859-2',
  1147.     'sl_si': 'sl_SI.ISO8859-2',
  1148.     'sl_si.iso88592': 'sl_SI.ISO8859-2',
  1149.     'slovak': 'sk_SK.ISO8859-2',
  1150.     'slovene': 'sl_SI.ISO8859-2',
  1151.     'slovenian': 'sl_SI.ISO8859-2',
  1152.     'sp': 'sr_CS.ISO8859-5',
  1153.     'sp_yu': 'sr_CS.ISO8859-5',
  1154.     'spanish': 'es_ES.ISO8859-1',
  1155.     'spanish.iso88591': 'es_ES.ISO8859-1',
  1156.     'spanish_spain': 'es_ES.ISO8859-1',
  1157.     'spanish_spain.8859': 'es_ES.ISO8859-1',
  1158.     'sq': 'sq_AL.ISO8859-2',
  1159.     'sq_al': 'sq_AL.ISO8859-2',
  1160.     'sq_al.iso88592': 'sq_AL.ISO8859-2',
  1161.     'sr': 'sr_RS.UTF-8',
  1162.     'sr@cyrillic': 'sr_RS.UTF-8',
  1163.     'sr@latin': 'sr_RS.UTF-8@latin',
  1164.     'sr@latn': 'sr_RS.UTF-8@latin',
  1165.     'sr_cs': 'sr_RS.UTF-8',
  1166.     'sr_cs.iso88592': 'sr_CS.ISO8859-2',
  1167.     'sr_cs.iso88592@latn': 'sr_CS.ISO8859-2',
  1168.     'sr_cs.iso88595': 'sr_CS.ISO8859-5',
  1169.     'sr_cs.utf8@latn': 'sr_RS.UTF-8@latin',
  1170.     'sr_cs@latn': 'sr_RS.UTF-8@latin',
  1171.     'sr_me': 'sr_ME.UTF-8',
  1172.     'sr_rs': 'sr_RS.UTF-8',
  1173.     'sr_rs.utf8@latn': 'sr_RS.UTF-8@latin',
  1174.     'sr_rs@latin': 'sr_RS.UTF-8@latin',
  1175.     'sr_rs@latn': 'sr_RS.UTF-8@latin',
  1176.     'sr_sp': 'sr_CS.ISO8859-2',
  1177.     'sr_yu': 'sr_RS.UTF-8@latin',
  1178.     'sr_yu.cp1251@cyrillic': 'sr_CS.CP1251',
  1179.     'sr_yu.iso88592': 'sr_CS.ISO8859-2',
  1180.     'sr_yu.iso88595': 'sr_CS.ISO8859-5',
  1181.     'sr_yu.iso88595@cyrillic': 'sr_CS.ISO8859-5',
  1182.     'sr_yu.microsoftcp1251@cyrillic': 'sr_CS.CP1251',
  1183.     'sr_yu.utf8@cyrillic': 'sr_RS.UTF-8',
  1184.     'sr_yu@cyrillic': 'sr_RS.UTF-8',
  1185.     'ss': 'ss_ZA.ISO8859-1',
  1186.     'ss_za': 'ss_ZA.ISO8859-1',
  1187.     'ss_za.iso88591': 'ss_ZA.ISO8859-1',
  1188.     'st': 'st_ZA.ISO8859-1',
  1189.     'st_za': 'st_ZA.ISO8859-1',
  1190.     'st_za.iso88591': 'st_ZA.ISO8859-1',
  1191.     'sv': 'sv_SE.ISO8859-1',
  1192.     'sv.iso885915': 'sv_SE.ISO8859-15',
  1193.     'sv_fi': 'sv_FI.ISO8859-1',
  1194.     'sv_fi.iso88591': 'sv_FI.ISO8859-1',
  1195.     'sv_fi.iso885915': 'sv_FI.ISO8859-15',
  1196.     'sv_fi.iso885915@euro': 'sv_FI.ISO8859-15',
  1197.     'sv_fi.utf8@euro': 'sv_FI.UTF-8',
  1198.     'sv_fi@euro': 'sv_FI.ISO8859-15',
  1199.     'sv_se': 'sv_SE.ISO8859-1',
  1200.     'sv_se.88591': 'sv_SE.ISO8859-1',
  1201.     'sv_se.iso88591': 'sv_SE.ISO8859-1',
  1202.     'sv_se.iso885915': 'sv_SE.ISO8859-15',
  1203.     'sv_se@euro': 'sv_SE.ISO8859-15',
  1204.     'swedish': 'sv_SE.ISO8859-1',
  1205.     'swedish.iso88591': 'sv_SE.ISO8859-1',
  1206.     'ta': 'ta_IN.TSCII-0',
  1207.     'ta_in': 'ta_IN.TSCII-0',
  1208.     'ta_in.tscii': 'ta_IN.TSCII-0',
  1209.     'ta_in.tscii0': 'ta_IN.TSCII-0',
  1210.     'te': 'te_IN.UTF-8',
  1211.     'tg': 'tg_TJ.KOI8-C',
  1212.     'tg_tj': 'tg_TJ.KOI8-C',
  1213.     'tg_tj.koi8c': 'tg_TJ.KOI8-C',
  1214.     'th': 'th_TH.ISO8859-11',
  1215.     'th_th': 'th_TH.ISO8859-11',
  1216.     'th_th.iso885911': 'th_TH.ISO8859-11',
  1217.     'th_th.tactis': 'th_TH.TIS620',
  1218.     'th_th.tis620': 'th_TH.TIS620',
  1219.     'thai': 'th_TH.ISO8859-11',
  1220.     'tl': 'tl_PH.ISO8859-1',
  1221.     'tl_ph': 'tl_PH.ISO8859-1',
  1222.     'tl_ph.iso88591': 'tl_PH.ISO8859-1',
  1223.     'tn': 'tn_ZA.ISO8859-15',
  1224.     'tn_za': 'tn_ZA.ISO8859-15',
  1225.     'tn_za.iso885915': 'tn_ZA.ISO8859-15',
  1226.     'tr': 'tr_TR.ISO8859-9',
  1227.     'tr_tr': 'tr_TR.ISO8859-9',
  1228.     'tr_tr.iso88599': 'tr_TR.ISO8859-9',
  1229.     'ts': 'ts_ZA.ISO8859-1',
  1230.     'ts_za': 'ts_ZA.ISO8859-1',
  1231.     'ts_za.iso88591': 'ts_ZA.ISO8859-1',
  1232.     'tt': 'tt_RU.TATAR-CYR',
  1233.     'tt_ru': 'tt_RU.TATAR-CYR',
  1234.     'tt_ru.koi8c': 'tt_RU.KOI8-C',
  1235.     'tt_ru.tatarcyr': 'tt_RU.TATAR-CYR',
  1236.     'turkish': 'tr_TR.ISO8859-9',
  1237.     'turkish.iso88599': 'tr_TR.ISO8859-9',
  1238.     'uk': 'uk_UA.KOI8-U',
  1239.     'uk_ua': 'uk_UA.KOI8-U',
  1240.     'uk_ua.cp1251': 'uk_UA.CP1251',
  1241.     'uk_ua.iso88595': 'uk_UA.ISO8859-5',
  1242.     'uk_ua.koi8u': 'uk_UA.KOI8-U',
  1243.     'uk_ua.microsoftcp1251': 'uk_UA.CP1251',
  1244.     'univ': 'en_US.utf',
  1245.     'universal': 'en_US.utf',
  1246.     'universal.utf8@ucs4': 'en_US.UTF-8',
  1247.     'ur': 'ur_PK.CP1256',
  1248.     'ur_pk': 'ur_PK.CP1256',
  1249.     'ur_pk.cp1256': 'ur_PK.CP1256',
  1250.     'ur_pk.microsoftcp1256': 'ur_PK.CP1256',
  1251.     'uz': 'uz_UZ.UTF-8',
  1252.     'uz_uz': 'uz_UZ.UTF-8',
  1253.     'uz_uz.iso88591': 'uz_UZ.ISO8859-1',
  1254.     'uz_uz.utf8@cyrillic': 'uz_UZ.UTF-8',
  1255.     'uz_uz@cyrillic': 'uz_UZ.UTF-8',
  1256.     've': 've_ZA.UTF-8',
  1257.     've_za': 've_ZA.UTF-8',
  1258.     'vi': 'vi_VN.TCVN',
  1259.     'vi_vn': 'vi_VN.TCVN',
  1260.     'vi_vn.tcvn': 'vi_VN.TCVN',
  1261.     'vi_vn.tcvn5712': 'vi_VN.TCVN',
  1262.     'vi_vn.viscii': 'vi_VN.VISCII',
  1263.     'vi_vn.viscii111': 'vi_VN.VISCII',
  1264.     'wa': 'wa_BE.ISO8859-1',
  1265.     'wa_be': 'wa_BE.ISO8859-1',
  1266.     'wa_be.iso88591': 'wa_BE.ISO8859-1',
  1267.     'wa_be.iso885915': 'wa_BE.ISO8859-15',
  1268.     'wa_be.iso885915@euro': 'wa_BE.ISO8859-15',
  1269.     'wa_be@euro': 'wa_BE.ISO8859-15',
  1270.     'xh': 'xh_ZA.ISO8859-1',
  1271.     'xh_za': 'xh_ZA.ISO8859-1',
  1272.     'xh_za.iso88591': 'xh_ZA.ISO8859-1',
  1273.     'yi': 'yi_US.CP1255',
  1274.     'yi_us': 'yi_US.CP1255',
  1275.     'yi_us.cp1255': 'yi_US.CP1255',
  1276.     'yi_us.microsoftcp1255': 'yi_US.CP1255',
  1277.     'zh': 'zh_CN.eucCN',
  1278.     'zh_cn': 'zh_CN.gb2312',
  1279.     'zh_cn.big5': 'zh_TW.big5',
  1280.     'zh_cn.euc': 'zh_CN.eucCN',
  1281.     'zh_cn.gb18030': 'zh_CN.gb18030',
  1282.     'zh_cn.gb2312': 'zh_CN.gb2312',
  1283.     'zh_cn.gbk': 'zh_CN.gbk',
  1284.     'zh_hk': 'zh_HK.big5hkscs',
  1285.     'zh_hk.big5': 'zh_HK.big5',
  1286.     'zh_hk.big5hk': 'zh_HK.big5hkscs',
  1287.     'zh_hk.big5hkscs': 'zh_HK.big5hkscs',
  1288.     'zh_tw': 'zh_TW.big5',
  1289.     'zh_tw.big5': 'zh_TW.big5',
  1290.     'zh_tw.euc': 'zh_TW.eucTW',
  1291.     'zh_tw.euctw': 'zh_TW.eucTW',
  1292.     'zu': 'zu_ZA.ISO8859-1',
  1293.     'zu_za': 'zu_ZA.ISO8859-1',
  1294.     'zu_za.iso88591': 'zu_ZA.ISO8859-1' }
  1295. windows_locale = {
  1296.     1078: 'af_ZA',
  1297.     1052: 'sq_AL',
  1298.     1156: 'gsw_FR',
  1299.     1118: 'am_ET',
  1300.     1025: 'ar_SA',
  1301.     2049: 'ar_IQ',
  1302.     3073: 'ar_EG',
  1303.     4097: 'ar_LY',
  1304.     5121: 'ar_DZ',
  1305.     6145: 'ar_MA',
  1306.     7169: 'ar_TN',
  1307.     8193: 'ar_OM',
  1308.     9217: 'ar_YE',
  1309.     10241: 'ar_SY',
  1310.     11265: 'ar_JO',
  1311.     12289: 'ar_LB',
  1312.     13313: 'ar_KW',
  1313.     14337: 'ar_AE',
  1314.     15361: 'ar_BH',
  1315.     16385: 'ar_QA',
  1316.     1067: 'hy_AM',
  1317.     1101: 'as_IN',
  1318.     1068: 'az_AZ',
  1319.     2092: 'az_AZ',
  1320.     1133: 'ba_RU',
  1321.     1069: 'eu_ES',
  1322.     1059: 'be_BY',
  1323.     1093: 'bn_IN',
  1324.     8218: 'bs_BA',
  1325.     5146: 'bs_BA',
  1326.     1150: 'br_FR',
  1327.     1026: 'bg_BG',
  1328.     1027: 'ca_ES',
  1329.     4: 'zh_CHS',
  1330.     1028: 'zh_TW',
  1331.     2052: 'zh_CN',
  1332.     3076: 'zh_HK',
  1333.     4100: 'zh_SG',
  1334.     5124: 'zh_MO',
  1335.     31748: 'zh_CHT',
  1336.     1155: 'co_FR',
  1337.     1050: 'hr_HR',
  1338.     4122: 'hr_BA',
  1339.     1029: 'cs_CZ',
  1340.     1030: 'da_DK',
  1341.     1164: 'gbz_AF',
  1342.     1125: 'div_MV',
  1343.     1043: 'nl_NL',
  1344.     2067: 'nl_BE',
  1345.     1033: 'en_US',
  1346.     2057: 'en_GB',
  1347.     3081: 'en_AU',
  1348.     4105: 'en_CA',
  1349.     5129: 'en_NZ',
  1350.     6153: 'en_IE',
  1351.     7177: 'en_ZA',
  1352.     8201: 'en_JA',
  1353.     9225: 'en_CB',
  1354.     10249: 'en_BZ',
  1355.     11273: 'en_TT',
  1356.     12297: 'en_ZW',
  1357.     13321: 'en_PH',
  1358.     16393: 'en_IN',
  1359.     17417: 'en_MY',
  1360.     18441: 'en_IN',
  1361.     1061: 'et_EE',
  1362.     1080: 'fo_FO',
  1363.     1124: 'fil_PH',
  1364.     1035: 'fi_FI',
  1365.     1036: 'fr_FR',
  1366.     2060: 'fr_BE',
  1367.     3084: 'fr_CA',
  1368.     4108: 'fr_CH',
  1369.     5132: 'fr_LU',
  1370.     6156: 'fr_MC',
  1371.     1122: 'fy_NL',
  1372.     1110: 'gl_ES',
  1373.     1079: 'ka_GE',
  1374.     1031: 'de_DE',
  1375.     2055: 'de_CH',
  1376.     3079: 'de_AT',
  1377.     4103: 'de_LU',
  1378.     5127: 'de_LI',
  1379.     1032: 'el_GR',
  1380.     1135: 'kl_GL',
  1381.     1095: 'gu_IN',
  1382.     1128: 'ha_NG',
  1383.     1037: 'he_IL',
  1384.     1081: 'hi_IN',
  1385.     1038: 'hu_HU',
  1386.     1039: 'is_IS',
  1387.     1057: 'id_ID',
  1388.     1117: 'iu_CA',
  1389.     2141: 'iu_CA',
  1390.     2108: 'ga_IE',
  1391.     1040: 'it_IT',
  1392.     2064: 'it_CH',
  1393.     1041: 'ja_JP',
  1394.     1099: 'kn_IN',
  1395.     1087: 'kk_KZ',
  1396.     1107: 'kh_KH',
  1397.     1158: 'qut_GT',
  1398.     1159: 'rw_RW',
  1399.     1111: 'kok_IN',
  1400.     1042: 'ko_KR',
  1401.     1088: 'ky_KG',
  1402.     1108: 'lo_LA',
  1403.     1062: 'lv_LV',
  1404.     1063: 'lt_LT',
  1405.     2094: 'dsb_DE',
  1406.     1134: 'lb_LU',
  1407.     1071: 'mk_MK',
  1408.     1086: 'ms_MY',
  1409.     2110: 'ms_BN',
  1410.     1100: 'ml_IN',
  1411.     1082: 'mt_MT',
  1412.     1153: 'mi_NZ',
  1413.     1146: 'arn_CL',
  1414.     1102: 'mr_IN',
  1415.     1148: 'moh_CA',
  1416.     1104: 'mn_MN',
  1417.     2128: 'mn_CN',
  1418.     1121: 'ne_NP',
  1419.     1044: 'nb_NO',
  1420.     2068: 'nn_NO',
  1421.     1154: 'oc_FR',
  1422.     1096: 'or_IN',
  1423.     1123: 'ps_AF',
  1424.     1065: 'fa_IR',
  1425.     1045: 'pl_PL',
  1426.     1046: 'pt_BR',
  1427.     2070: 'pt_PT',
  1428.     1094: 'pa_IN',
  1429.     1131: 'quz_BO',
  1430.     2155: 'quz_EC',
  1431.     3179: 'quz_PE',
  1432.     1048: 'ro_RO',
  1433.     1047: 'rm_CH',
  1434.     1049: 'ru_RU',
  1435.     9275: 'smn_FI',
  1436.     4155: 'smj_NO',
  1437.     5179: 'smj_SE',
  1438.     1083: 'se_NO',
  1439.     2107: 'se_SE',
  1440.     3131: 'se_FI',
  1441.     8251: 'sms_FI',
  1442.     6203: 'sma_NO',
  1443.     7227: 'sma_SE',
  1444.     1103: 'sa_IN',
  1445.     3098: 'sr_SP',
  1446.     7194: 'sr_BA',
  1447.     2074: 'sr_SP',
  1448.     6170: 'sr_BA',
  1449.     1115: 'si_LK',
  1450.     1132: 'ns_ZA',
  1451.     1074: 'tn_ZA',
  1452.     1051: 'sk_SK',
  1453.     1060: 'sl_SI',
  1454.     1034: 'es_ES',
  1455.     2058: 'es_MX',
  1456.     3082: 'es_ES',
  1457.     4106: 'es_GT',
  1458.     5130: 'es_CR',
  1459.     6154: 'es_PA',
  1460.     7178: 'es_DO',
  1461.     8202: 'es_VE',
  1462.     9226: 'es_CO',
  1463.     10250: 'es_PE',
  1464.     11274: 'es_AR',
  1465.     12298: 'es_EC',
  1466.     13322: 'es_CL',
  1467.     14346: 'es_UR',
  1468.     15370: 'es_PY',
  1469.     16394: 'es_BO',
  1470.     17418: 'es_SV',
  1471.     18442: 'es_HN',
  1472.     19466: 'es_NI',
  1473.     20490: 'es_PR',
  1474.     21514: 'es_US',
  1475.     1089: 'sw_KE',
  1476.     1053: 'sv_SE',
  1477.     2077: 'sv_FI',
  1478.     1114: 'syr_SY',
  1479.     1064: 'tg_TJ',
  1480.     2143: 'tmz_DZ',
  1481.     1097: 'ta_IN',
  1482.     1092: 'tt_RU',
  1483.     1098: 'te_IN',
  1484.     1054: 'th_TH',
  1485.     2129: 'bo_BT',
  1486.     1105: 'bo_CN',
  1487.     1055: 'tr_TR',
  1488.     1090: 'tk_TM',
  1489.     1152: 'ug_CN',
  1490.     1058: 'uk_UA',
  1491.     1070: 'wen_DE',
  1492.     1056: 'ur_PK',
  1493.     2080: 'ur_IN',
  1494.     1091: 'uz_UZ',
  1495.     2115: 'uz_UZ',
  1496.     1066: 'vi_VN',
  1497.     1106: 'cy_GB',
  1498.     1160: 'wo_SN',
  1499.     1076: 'xh_ZA',
  1500.     1157: 'sah_RU',
  1501.     1144: 'ii_CN',
  1502.     1130: 'yo_NG',
  1503.     1077: 'zu_ZA' }
  1504.  
  1505. def _print_locale():
  1506.     categories = { }
  1507.     
  1508.     def _init_categories(categories = categories):
  1509.         for k, v in globals().items():
  1510.             if k[:3] == 'LC_':
  1511.                 categories[k] = v
  1512.                 continue
  1513.  
  1514.     _init_categories()
  1515.     del categories['LC_ALL']
  1516.     print 'Locale defaults as determined by getdefaultlocale():'
  1517.     print '-' * 72
  1518.     (lang, enc) = getdefaultlocale()
  1519.     print 'Language: ',
  1520.     if not lang:
  1521.         pass
  1522.     print '(undefined)'
  1523.     print 'Encoding: ',
  1524.     if not enc:
  1525.         pass
  1526.     print '(undefined)'
  1527.     print 
  1528.     print 'Locale settings on startup:'
  1529.     print '-' * 72
  1530.     for name, category in categories.items():
  1531.         print name, '...'
  1532.         (lang, enc) = getlocale(category)
  1533.         print '   Language: ',
  1534.         if not lang:
  1535.             pass
  1536.         print '(undefined)'
  1537.         print '   Encoding: ',
  1538.         if not enc:
  1539.             pass
  1540.         print '(undefined)'
  1541.         print 
  1542.     
  1543.     print 
  1544.     print 'Locale settings after calling resetlocale():'
  1545.     print '-' * 72
  1546.     resetlocale()
  1547.     for name, category in categories.items():
  1548.         print name, '...'
  1549.         (lang, enc) = getlocale(category)
  1550.         print '   Language: ',
  1551.         if not lang:
  1552.             pass
  1553.         print '(undefined)'
  1554.         print '   Encoding: ',
  1555.         if not enc:
  1556.             pass
  1557.         print '(undefined)'
  1558.         print 
  1559.     
  1560.     
  1561.     try:
  1562.         setlocale(LC_ALL, '')
  1563.     except:
  1564.         print 'NOTE:'
  1565.         print 'setlocale(LC_ALL, "") does not support the default locale'
  1566.         print 'given in the OS environment variables.'
  1567.  
  1568.     print 
  1569.     print 'Locale settings after calling setlocale(LC_ALL, ""):'
  1570.     print '-' * 72
  1571.     for name, category in categories.items():
  1572.         print name, '...'
  1573.         (lang, enc) = getlocale(category)
  1574.         print '   Language: ',
  1575.         if not lang:
  1576.             pass
  1577.         print '(undefined)'
  1578.         print '   Encoding: ',
  1579.         if not enc:
  1580.             pass
  1581.         print '(undefined)'
  1582.         print 
  1583.     
  1584.  
  1585.  
  1586. try:
  1587.     LC_MESSAGES
  1588. except NameError:
  1589.     pass
  1590.  
  1591. __all__.append('LC_MESSAGES')
  1592. if __name__ == '__main__':
  1593.     print 'Locale aliasing:'
  1594.     print 
  1595.     _print_locale()
  1596.     print 
  1597.     print 'Number formatting:'
  1598.     print 
  1599.     _test()
  1600.