home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_983 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  10.2 KB  |  434 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
  6. __docformat__ = 'restructuredtext en'
  7. from struct import pack
  8. lang_codes = { }
  9. main_language = {
  10.     0: 'NEUTRAL',
  11.     54: 'AFRIKAANS',
  12.     28: 'ALBANIAN',
  13.     1: 'ARABIC',
  14.     43: 'ARMENIAN',
  15.     77: 'ASSAMESE',
  16.     44: 'AZERI',
  17.     45: 'BASQUE',
  18.     35: 'BELARUSIAN',
  19.     69: 'BENGALI',
  20.     2: 'BULGARIAN',
  21.     3: 'CATALAN',
  22.     4: 'CHINESE',
  23.     26: 'CROATIAN',
  24.     5: 'CZECH',
  25.     6: 'DANISH',
  26.     19: 'DUTCH',
  27.     9: 'ENGLISH',
  28.     37: 'ESTONIAN',
  29.     56: 'FAEROESE',
  30.     41: 'FARSI',
  31.     11: 'FINNISH',
  32.     12: 'FRENCH',
  33.     55: 'GEORGIAN',
  34.     7: 'GERMAN',
  35.     8: 'GREEK',
  36.     71: 'GUJARATI',
  37.     13: 'HEBREW',
  38.     57: 'HINDI',
  39.     14: 'HUNGARIAN',
  40.     15: 'ICELANDIC',
  41.     33: 'INDONESIAN',
  42.     16: 'ITALIAN',
  43.     17: 'JAPANESE',
  44.     75: 'KANNADA',
  45.     63: 'KAZAK',
  46.     87: 'KONKANI',
  47.     18: 'KOREAN',
  48.     38: 'LATVIAN',
  49.     39: 'LITHUANIAN',
  50.     47: 'MACEDONIAN',
  51.     62: 'MALAY',
  52.     76: 'MALAYALAM',
  53.     58: 'MALTESE',
  54.     78: 'MARATHI',
  55.     97: 'NEPALI',
  56.     20: 'NORWEGIAN',
  57.     72: 'ORIYA',
  58.     21: 'POLISH',
  59.     22: 'PORTUGUESE',
  60.     70: 'PUNJABI',
  61.     23: 'RHAETOROMANIC',
  62.     24: 'ROMANIAN',
  63.     25: 'RUSSIAN',
  64.     59: 'SAMI',
  65.     79: 'SANSKRIT',
  66.     26: 'SERBIAN',
  67.     27: 'SLOVAK',
  68.     36: 'SLOVENIAN',
  69.     46: 'SORBIAN',
  70.     10: 'SPANISH',
  71.     48: 'SUTU',
  72.     65: 'SWAHILI',
  73.     29: 'SWEDISH',
  74.     73: 'TAMIL',
  75.     68: 'TATAR',
  76.     74: 'TELUGU',
  77.     30: 'THAI',
  78.     49: 'TSONGA',
  79.     50: 'TSWANA',
  80.     31: 'TURKISH',
  81.     34: 'UKRAINIAN',
  82.     32: 'URDU',
  83.     67: 'UZBEK',
  84.     42: 'VIETNAMESE',
  85.     52: 'XHOSA',
  86.     53: 'ZULU' }
  87. sub_language = {
  88.     0: 'NEUTRAL',
  89.     1: 'ARABIC_SAUDI_ARABIA',
  90.     2: 'ARABIC_IRAQ',
  91.     3: 'ARABIC_EGYPT',
  92.     4: 'ARABIC_LIBYA',
  93.     5: 'ARABIC_ALGERIA',
  94.     6: 'ARABIC_MOROCCO',
  95.     7: 'ARABIC_TUNISIA',
  96.     8: 'ARABIC_OMAN',
  97.     9: 'ARABIC_YEMEN',
  98.     10: 'ARABIC_SYRIA',
  99.     11: 'ARABIC_JORDAN',
  100.     12: 'ARABIC_LEBANON',
  101.     13: 'ARABIC_KUWAIT',
  102.     14: 'ARABIC_UAE',
  103.     15: 'ARABIC_BAHRAIN',
  104.     16: 'ARABIC_QATAR',
  105.     1: 'AZERI_LATIN',
  106.     2: 'AZERI_CYRILLIC',
  107.     1: 'CHINESE_TRADITIONAL',
  108.     2: 'CHINESE_SIMPLIFIED',
  109.     3: 'CHINESE_HONGKONG',
  110.     4: 'CHINESE_SINGAPORE',
  111.     1: 'DUTCH',
  112.     2: 'DUTCH_BELGIAN',
  113.     1: 'FRENCH',
  114.     2: 'FRENCH_BELGIAN',
  115.     3: 'FRENCH_CANADIAN',
  116.     4: 'FRENCH_SWISS',
  117.     5: 'FRENCH_LUXEMBOURG',
  118.     6: 'FRENCH_MONACO',
  119.     1: 'GERMAN',
  120.     2: 'GERMAN_SWISS',
  121.     3: 'GERMAN_AUSTRIAN',
  122.     4: 'GERMAN_LUXEMBOURG',
  123.     5: 'GERMAN_LIECHTENSTEIN',
  124.     1: 'ITALIAN',
  125.     2: 'ITALIAN_SWISS',
  126.     1: 'KOREAN',
  127.     1: 'LITHUANIAN',
  128.     1: 'MALAY_MALAYSIA',
  129.     2: 'MALAY_BRUNEI_DARUSSALAM',
  130.     1: 'NORWEGIAN_BOKMAL',
  131.     2: 'NORWEGIAN_NYNORSK',
  132.     2: 'PORTUGUESE',
  133.     1: 'PORTUGUESE_BRAZILIAN',
  134.     2: 'SERBIAN_LATIN',
  135.     3: 'SERBIAN_CYRILLIC',
  136.     1: 'SPANISH',
  137.     2: 'SPANISH_MEXICAN',
  138.     4: 'SPANISH_GUATEMALA',
  139.     5: 'SPANISH_COSTA_RICA',
  140.     6: 'SPANISH_PANAMA',
  141.     7: 'SPANISH_DOMINICAN_REPUBLIC',
  142.     8: 'SPANISH_VENEZUELA',
  143.     9: 'SPANISH_COLOMBIA',
  144.     10: 'SPANISH_PERU',
  145.     11: 'SPANISH_ARGENTINA',
  146.     12: 'SPANISH_ECUADOR',
  147.     13: 'SPANISH_CHILE',
  148.     14: 'SPANISH_URUGUAY',
  149.     15: 'SPANISH_PARAGUAY',
  150.     16: 'SPANISH_BOLIVIA',
  151.     17: 'SPANISH_EL_SALVADOR',
  152.     18: 'SPANISH_HONDURAS',
  153.     19: 'SPANISH_NICARAGUA',
  154.     20: 'SPANISH_PUERTO_RICO',
  155.     1: 'SWEDISH',
  156.     2: 'SWEDISH_FINLAND',
  157.     1: 'UZBEK_LATIN',
  158.     2: 'UZBEK_CYRILLIC' }
  159. IANA_MOBI = {
  160.     None: {
  161.         None: (0, 0) },
  162.     'af': {
  163.         None: (54, 0) },
  164.     'ar': {
  165.         None: (1, 0),
  166.         'AE': (1, 56),
  167.         'BH': (1, 60),
  168.         'DZ': (1, 20),
  169.         'EG': (1, 12),
  170.         'JO': (1, 44),
  171.         'KW': (1, 52),
  172.         'LB': (1, 48),
  173.         'MA': (1, 24),
  174.         'OM': (1, 32),
  175.         'QA': (1, 64),
  176.         'SA': (1, 4),
  177.         'SY': (1, 40),
  178.         'TN': (1, 28),
  179.         'YE': (1, 36) },
  180.     'as': {
  181.         None: (77, 0) },
  182.     'az': {
  183.         None: (44, 0) },
  184.     'be': {
  185.         None: (35, 0) },
  186.     'bg': {
  187.         None: (2, 0) },
  188.     'bn': {
  189.         None: (69, 0) },
  190.     'ca': {
  191.         None: (3, 0) },
  192.     'cs': {
  193.         None: (5, 0) },
  194.     'da': {
  195.         None: (6, 0) },
  196.     'de': {
  197.         None: (7, 0),
  198.         'AT': (7, 12),
  199.         'CH': (7, 8),
  200.         'LI': (7, 20),
  201.         'LU': (7, 16) },
  202.     'el': {
  203.         None: (8, 0) },
  204.     'en': {
  205.         None: (9, 0),
  206.         'AU': (9, 12),
  207.         'BZ': (9, 40),
  208.         'CA': (9, 16),
  209.         'GB': (9, 8),
  210.         'IE': (9, 24),
  211.         'JM': (9, 32),
  212.         'NZ': (9, 20),
  213.         'PH': (9, 52),
  214.         'TT': (9, 44),
  215.         'US': (9, 4),
  216.         'ZA': (9, 28),
  217.         'ZW': (9, 48) },
  218.     'es': {
  219.         None: (10, 0),
  220.         'AR': (10, 44),
  221.         'BO': (10, 64),
  222.         'CL': (10, 52),
  223.         'CO': (10, 36),
  224.         'CR': (10, 20),
  225.         'DO': (10, 28),
  226.         'EC': (10, 48),
  227.         'ES': (10, 4),
  228.         'GT': (10, 16),
  229.         'HN': (10, 72),
  230.         'MX': (10, 8),
  231.         'NI': (10, 76),
  232.         'PA': (10, 24),
  233.         'PE': (10, 40),
  234.         'PR': (10, 80),
  235.         'PY': (10, 60),
  236.         'SV': (10, 68),
  237.         'UY': (10, 56),
  238.         'VE': (10, 32) },
  239.     'et': {
  240.         None: (37, 0) },
  241.     'eu': {
  242.         None: (45, 0) },
  243.     'fa': {
  244.         None: (41, 0) },
  245.     'fi': {
  246.         None: (11, 0) },
  247.     'fo': {
  248.         None: (56, 0) },
  249.     'fr': {
  250.         None: (12, 0),
  251.         'BE': (12, 8),
  252.         'CA': (12, 12),
  253.         'CH': (12, 16),
  254.         'FR': (12, 4),
  255.         'LU': (12, 20),
  256.         'MC': (12, 24) },
  257.     'gu': {
  258.         None: (71, 0) },
  259.     'he': {
  260.         None: (13, 0) },
  261.     'hi': {
  262.         None: (57, 0) },
  263.     'hr': {
  264.         None: (26, 0) },
  265.     'hu': {
  266.         None: (14, 0) },
  267.     'hy': {
  268.         None: (43, 0) },
  269.     'id': {
  270.         None: (33, 0) },
  271.     'is': {
  272.         None: (15, 0) },
  273.     'it': {
  274.         None: (16, 0),
  275.         'CH': (16, 8),
  276.         'IT': (16, 4) },
  277.     'ja': {
  278.         None: (17, 0) },
  279.     'ka': {
  280.         None: (55, 0) },
  281.     'kk': {
  282.         None: (63, 0) },
  283.     'kn': {
  284.         None: (75, 0) },
  285.     'ko': {
  286.         None: (18, 0) },
  287.     'kok': {
  288.         None: (87, 0) },
  289.     'lt': {
  290.         None: (39, 0) },
  291.     'lv': {
  292.         None: (38, 0) },
  293.     'mk': {
  294.         None: (47, 0) },
  295.     'ml': {
  296.         None: (76, 0) },
  297.     'mr': {
  298.         None: (78, 0) },
  299.     'ms': {
  300.         None: (62, 0) },
  301.     'mt': {
  302.         None: (58, 0) },
  303.     'ne': {
  304.         None: (97, 0) },
  305.     'nl': {
  306.         None: (19, 0),
  307.         'BE': (19, 8) },
  308.     'no': {
  309.         None: (20, 0) },
  310.     'or': {
  311.         None: (72, 0) },
  312.     'pa': {
  313.         None: (70, 0) },
  314.     'pl': {
  315.         None: (21, 0) },
  316.     'pt': {
  317.         None: (22, 0),
  318.         'BR': (22, 4),
  319.         'PT': (22, 8) },
  320.     'rm': {
  321.         None: (23, 0) },
  322.     'ro': {
  323.         None: (24, 0) },
  324.     'ru': {
  325.         None: (25, 0) },
  326.     'sa': {
  327.         None: (79, 0) },
  328.     'se': {
  329.         None: (59, 0) },
  330.     'sk': {
  331.         None: (27, 0) },
  332.     'sl': {
  333.         None: (36, 0) },
  334.     'sq': {
  335.         None: (28, 0) },
  336.     'sr': {
  337.         None: (26, 12),
  338.         'RS': (26, 12) },
  339.     'st': {
  340.         None: (48, 0) },
  341.     'sv': {
  342.         None: (29, 0),
  343.         'FI': (29, 8) },
  344.     'sw': {
  345.         None: (65, 0) },
  346.     'ta': {
  347.         None: (73, 0) },
  348.     'te': {
  349.         None: (74, 0) },
  350.     'th': {
  351.         None: (30, 0) },
  352.     'tn': {
  353.         None: (50, 0) },
  354.     'tr': {
  355.         None: (31, 0) },
  356.     'ts': {
  357.         None: (49, 0) },
  358.     'tt': {
  359.         None: (68, 0) },
  360.     'uk': {
  361.         None: (34, 0) },
  362.     'ur': {
  363.         None: (32, 0) },
  364.     'uz': {
  365.         None: (67, 0),
  366.         'UZ': (67, 8) },
  367.     'vi': {
  368.         None: (42, 0) },
  369.     'wen': {
  370.         None: (46, 0) },
  371.     'xh': {
  372.         None: (52, 0) },
  373.     'zh': {
  374.         None: (4, 0),
  375.         'CN': (4, 8),
  376.         'HK': (4, 12),
  377.         'SG': (4, 16),
  378.         'TW': (4, 4) },
  379.     'zu': {
  380.         None: (53, 0) } }
  381.  
  382. def iana2mobi(icode):
  383.     langdict = IANA_MOBI[None]
  384.     subtags = []
  385.     if icode:
  386.         subtags = list(icode.split('-'))
  387.         while len(subtags) > 0:
  388.             lang = subtags.pop(0).lower()
  389.             if lang in IANA_MOBI:
  390.                 langdict = IANA_MOBI[lang]
  391.                 break
  392.                 continue
  393.     
  394.     mcode = langdict[None]
  395.     while len(subtags) > 0:
  396.         subtag = subtags.pop(0)
  397.         if subtag not in langdict:
  398.             subtag = subtag.title()
  399.         
  400.         if subtag not in langdict:
  401.             subtag = subtag.upper()
  402.         
  403.         if subtag in langdict:
  404.             mcode = langdict[subtag]
  405.             break
  406.             continue
  407.     return pack('>HBB', 0, mcode[1], mcode[0])
  408.  
  409.  
  410. def mobi2iana(langcode, sublangcode):
  411.     prefix = None
  412.     suffix = None
  413.     for code, d in IANA_MOBI.items():
  414.         for subcode, t in d.items():
  415.             (cc, cl) = t
  416.             if cc == langcode:
  417.                 prefix = code
  418.             
  419.             if cl == sublangcode:
  420.                 suffix = None if subcode else None
  421.                 break
  422.                 continue
  423.         
  424.         if prefix is not None:
  425.             break
  426.             continue
  427.     
  428.     if prefix is None:
  429.         return 'und'
  430.     if suffix is None:
  431.         return prefix
  432.     return prefix + '-' + suffix
  433.  
  434.