L]c@sddlZddlZddlZddlZddlZddlmZdZej dddddd ddd d dd Z id d 6d d6dd6dd6Z iZ iZ iZiZiZddMdYZddNdYZddOdYZddPdYZddQdYZdeefdYZdefd YZd!efd"YZd#efd$YZd%efd&YZd'efd(YZd)Zd*Zd+Zd,Z d-Z!d.Z"d/Z#d0Z$e%d1Z&d2Z'd3d4Z(dddd5Z*ddddd6Z+ddddddd7Z,ddd8Z-ddd9Z.ddddd:Z/d;d<Z0d;d=Z1d>Z2e%e3dddd?Z4e%e3dddd@Z5e%e3ddddAZ6e%e3ddddBZ7e%e3ddddCZ8e%e3ddddDZ9ddEZ:dFZ;e3ddddGZ<e3dHedIZ=dJdRdKYZ>e>Z?e@dLkrddlAZAe=eAjBndS(SiN(tContentHandlers/usr/share/langtables^(?P[a-z]{2,3}s(?=$|@s'|_[A-Z][a-z]{3}(?=$|@|_[A-Z]{2}(?=$|@))s|_[A-Z]{2}(?=$|@)s))s(?:_(?P s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYass s s s s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYjss s s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYsss s s s s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRY|ss sss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss sss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s s s s s N( twritetsortedR=R R titemsR>R R R RRR(tfilet territoryIdR R:R tscriptIdtrankR tlocaleIdR t languageIdR t keyboardIdRt inputmethodIdRt consolefontIdRt timezoneId((s-/usr/lib/python2.7/site-packages/langtable.pyt_write_territories_fileDsp     +   (-   (-   (-   (-   (-   (-   (-  cCs|jd|jdxttD]}|jd|jd|d|jdtt|jd|jdtt|jd |jd tt|jd t|j}|jd xAt|D]3}|jd d|dd||ddqW|jdt|j}|jdxXt|j ddD];\}}|jdd|ddt|ddqVW|jdt|j }|jdxXt|j ddD];\}}|jd d!|d"dt|dd#qW|jd$t|j } |jd%xXt| j dd&D];\} }|jd'd(| d)dt|dd*qZW|jd+t|j } |jd,xXt| j dd-D];\} }|jd.d/| d0dt|dd1qW|jd2t|j } |jd3xXt| j dd4D];\}}|jd5d6|d7dt|dd8q^W|jd9t|j}|jd:xXt|j dd;D];\}}|jd<d=|d>dt|dd?qW|jd@t|j}|jdAxXt|j ddBD];\}}|jdCdD|dEdt|ddFqbW|jdG|jdHq'W|jdIdJS(Ks Only for internal use s' s s s s s s s s s s s s s s ss s s s RWcSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s s s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s ss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s s s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss sss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss sss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s s s s s N(RZR[RPR>RRRR R R\R RR RRR(R]RbR R:R R_R`R RaRR^R RcRRdRReRRf((s-/usr/lib/python2.7/site-packages/langtable.pyt_write_languages_filesv   """  +   (-   (-   (-   (-   (-   (-   (-  cCs|jd|jdxttD]}|jd|jd|d|jdt|jd|jdtt|jd t|jdkr|jd t|jd nt|j}|jd xXt|j d dD];\}}|jdd|ddt|ddqW|jdt|j }|jdxXt|j d dD];\}}|jdd|ddt|ddqwW|jd|jdq'W|jddS( s Only for internal use s' s s s s s s s s s s s RWcSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYss s s sss s s cSsd|d|dfS(Niii((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRY ss s ss s s s N( RZR[RHRR>RRRR R\R(R]RcR RbR`RR^((s-/usr/lib/python2.7/site-packages/langtable.pyt_write_keyboards_files0   "  (-   (-  cCs|jd|jdxttD]}|jd|jd|dt|j}|jdxAt|D]3}|jdd|d d ||d d qvW|jd |jdq'W|jddS(s Only for internal use s' s s s s s s s s ss s s s s N(RZR[RSR (R]RfR R:((s-/usr/lib/python2.7/site-packages/langtable.pyt_write_timezones_files     +  cCs|jd|jdxttD]}|jd|jd|dt|j}|jdxAt|D]3}|jdd|d d ||d d qvW|jd |jdq'W|jddS(s Only for internal use s' s s s s s s s s ss s s s s N(RZR[RVR (R]ttimezoneIdPartIdR R:((s-/usr/lib/python2.7/site-packages/langtable.pyt_write_timezoneIdParts_file*s     +  cCsGtjjj}|j|_|j|_|j|_ |j |dS(so Only for internal use. Parses a given file object with a given SAX handler using an expat parser. N( txmltparserstexpatt ParserCreateR<tStartElementHandlerRAtEndElementHandlerR)tCharacterDataHandlert ParseFile(R]t sax_handlertparser((s-/usr/lib/python2.7/site-packages/langtable.pyt _expat_parse@s    c Csx|dgD]}tjj||}tjj|rwt|dd%}tjd|t||WdQXdStjj||d}tjj|r tj|dd%}tjd|t||WdQXdSq WtjddS(s Only for internal use t.tmodetrbsreading file=%sNs.gzsno readable file found.( tostpathtjointisfiletopentloggingtinfoRwtgzip(tdatadirtfilenameRutdirR|R]((s-/usr/lib/python2.7/site-packages/langtable.pyt _read_fileLsc Cs6t|d"}tjd|t|WdQXt|d"}tjd|t|WdQXt|d"}tjd|t|WdQXt|d"}tjd|t|WdQXt|d"}tjd|t|WdQXt|d"} tjd| t| WdQXdS(s Only for internal use twswriting territories file=%sNswriting languages file=%sswriting keyboards file=%sswriting timezones file=%sswriting timezoneidparts file=%s(RRRRgRhRiRjRl( tterritoriesfilenametlanguagesfilenametkeyboardsfilenamettimezonesfilenamettimezoneidpartsfilenametterritoriesfilet languagesfilet keyboardsfilet timezonesfilettimezoneidpartsfile((s-/usr/lib/python2.7/site-packages/langtable.pyt _write_files`s&cs`g}xStdfdd|D]0}|dkr(|j||gq(q(W|S(NRWcsj||fS(N(tget(RX(R9(s-/usr/lib/python2.7/site-packages/langtable.pyRYzstreversei(R[tappend(R9Rt sorted_listtitem((R9s-/usr/lib/python2.7/site-packages/langtable.pyt_dictionary_to_ranked_listxs (cCsttd|S(NcSs|dS(Ni((RX((s-/usr/lib/python2.7/site-packages/langtable.pyRYs(tlisttmap(t ranked_list((s-/usr/lib/python2.7/site-packages/langtable.pyt_ranked_list_to_listsicCswt|dks|SxZtdt|dD]?}||d||dd|kr0|d|d!}Pq0q0W|S(Nii(tlentrange(Rtcut_off_factorti((s-/usr/lib/python2.7/site-packages/langtable.pyt_make_ranked_list_concises $cCs|rm|jd}|jd}|dkrQ||krQ|| ||}qm|dkrm|| }qmnxltD]d}|r|j|t|}n|rt|jd|rt|}n|j|t|}qtqtW|r_tj|}|rK|jd}|jdr'|jd}n|jdr\|jd}q\q_tjd|n|dkr|r| r|dkrd }q|dkrd}qn|||fS(s Parses languageId and if it contains a valid ICU locale id, returns the values for language, script, and territory found in languageId instead of the original values given. Before parsing, it replaces glibc names for scripts like “latin” with the iso-15924 script names like “Latn”, both in the languageId and the scriptId parameter. I.e. language id like “sr_latin_RS” is accepted as well and treated the same as “sr_Latn_RS”. Rxt@itlanguagetscriptt territorys(languageId contains invalid locale id=%stzhtCNtSGtHanstHKtMOtTWtHant(RR(RRR( tfindt_glibc_script_idstreplacetendswitht_cldr_locale_patterntmatchtgroupRR(RbR_R^t dot_indextat_indexRWR((s-/usr/lib/python2.7/site-packages/langtable.pyt_parse_and_split_languageIds:        cCs3td|d|d|\}}}|tkr/|r}|r}|r}|d|d|}|t|jkr}t|j|Sn|r|r|d|}|t|jkrt|j|Sn|r|r|d|}|t|jkrt|j|Sn|r/|}|t|jkr,t|j|Sq/ndS(u|Query translations of territory names :param territoryId: identifier for the territory :type territoryId: string :param languageIdQuery: identifier for the language used in the result :type languageIdQuery: string :param scriptIdQuery: identifier for the script used in the result :type scriptIdQuery: string :param territoryIdQuery: identifier for the territory used in the result :type territoryIdQuery: string :rtype: string **Examples:** Switzerland is called “Schweiz” in German: >>> print(territory_name(territoryId="CH", languageIdQuery="de")) Schweiz And it is called “Svizzera” in Italian: >>> print(territory_name(territoryId="CH", languageIdQuery="it")) Svizzera And it is called “スイス” in Japanese: >>> print(territory_name(territoryId="CH", languageIdQuery="ja")) スイス RbR_R^t_t(RR=R (R^tlanguageIdQueryt scriptIdQuerytterritoryIdQueryticuLocaleIdQuery((s-/usr/lib/python2.7/site-packages/langtable.pytterritory_names,   c Cstd|d|d|\}}}td|d|d|\}}}|sc|}|}|}n|r|r|r|d|d|}|tkr|r|r|r|d|d|}|t|jkrt|j|Sn|r#|r#|d|}|t|jkr#t|j|Sn|rb|rb|d|}|t|jkrbt|j|Sn|r|}|t|jkrt|j|Sqqn|rR|rR|d|}|tkrRtd|d|d|d|}|rI|rI|rI|d|d|}|t|jkrIt|j|} |rB| d|d S| Sn|r|r|d|}|t|jkrt|j|} |r| d|d S| Sn|r|r|d|}|t|jkrt|j|} |r| d|d S| Sn|rO|}|t|jkrLt|j|} |rE| d|d S| SqOqRn|r|r|d|}|tkrw|r|r|r|d|d|}|t|jkrt|j|Sn|r|r|d|}|t|jkrt|j|Sn|rC|rC|d|}|t|jkrCt|j|Sn|rw|}|t|jkrtt|j|Sqwntd|d|d|d|} td|d|d|d|}| r|r| d|d Sn|r|}|tkr|r=|r=|r=|d|d|}|t|jkr=t|j|Sn|r||r||d|}|t|jkr|t|j|Sn|r|r|d|}|t|jkrt|j|Sn|r|}|t|jkrt|j|Sqqnd S( uQuery translations of language names :param languageId: identifier for the language :type languageId: string :param scriptId: identifier for the script :type scriptId: string :param territoryId: identifier for the territory :type territoryId: string :param languageIdQuery: identifier for the language used in the result :type languageIdQuery: string :param scriptIdQuery: identifier for the script used in the result :type scriptIdQuery: string :param territoryIdQuery: identifier for the territory used in the result :type territoryIdQuery: string :rtype: string **Examples:** >>> print(language_name(languageId="sr")) српски I.e. the endonym for “Serbian” in the default Cyrillic script is “српски”. If the script “Cyrl” is supplied as well, the name of the script is added for clarity: >>> print(language_name(languageId="sr", scriptId="Cyrl")) српски (Ћирилица) And in Latin script the endonym is: >>> print(language_name(languageId="sr", scriptId="Latn")) Srpski (Latinica) And “Serbian” translated to English is: >>> print(language_name(languageId="sr", languageIdQuery="en")) Serbian And with adding the script information: >>> print(language_name(languageId="sr", scriptId="Cyrl", languageIdQuery="en")) Serbian (Cyrillic) >>> print(language_name(languageId="sr", scriptId="Latn", languageIdQuery="en")) Serbian (Latin) RbR_R^RRRRs (t)R(RRPR Rt language_name( RbR_R^RRRt icuLocaleIdRtcnametlname((s-/usr/lib/python2.7/site-packages/langtable.pyRs2                       cCs|o |sdS|jd}g}x|D]}|tkrQ|j|q,n|t|jkrt|j|}|r|j|qq,|dkr,|jdd}|j|q,q,Wt|t|krdj|SdS(sQuery translation of timezone IDs by querying translations for each part of the ID seperately and putting the results together Rt/tenRt u/(tsplitRVRR RRR}(RfRttimezoneId_partst part_namesttimezoneId_partR:((s-/usr/lib/python2.7/site-packages/langtable.pyt_timezone_name_from_id_partss$      cCsd|o |sdS|tkrA|t|jkrAt|j|Sntd|d|}|r`|SdS(s< Internal helper function to translate timezone IDs RRfR(RSR R(RfRtname_from_parts((s-/usr/lib/python2.7/site-packages/langtable.pyt_timezone_names  c Cstd|d|d|\}}}|rh|rh|rhtd|d|d|d|}|rh|Sn|r|rtd|d|d|}|r|Sn|r|rtd|d|d|}|r|Sn|rtd|d|}|r|Sn|S(uQuery translations of timezone IDs :param timezoneId: identifier for the time zone :type timezoneId: string :param languageIdQuery: identifier for the language used in the result :type languageIdQuery: string :param scriptIdQuery: identifier for the script used in the result :type scriptIdQuery: string :param territoryIdQuery: identifier for the territory used in the result :type territoryId: string :rtype: string **Examples:** >>> print(timezone_name(timezoneId='US/Pacific', languageIdQuery='ja')) アメリカ合衆国/太平洋時間 If no translation can be found, the timezone ID is returned unchanged: >>> print(timezone_name(timezoneId='Pacific/Pago_Pago', languageIdQuery='xxx')) Pacific/Pago_Pago RbR_R^RfRR(RR(RfRRRR:((s-/usr/lib/python2.7/site-packages/langtable.pyt timezone_names:   ucCs||s dSt|tdkr4|jd}nxAtD]9}x0t|jD]!}|t|j|krO|SqOWq;WdS(sQuery the territoryId from a translated name of a territory. :param territoryName: the translated name of a language :type territoryName: string :rtype: string The translated name given should be a Python Unicode string or an UTF-8 encoded string. The translated name can be in any language. But there will be only a result if the translation matches exactly. **Examples:** >>> territoryId("India") 'IN' >>> territoryId("भारत") 'IN' >>> territoryId("インド") 'IN' >>> territoryId("Latin America") '419' >>> territoryId("Latinoamérica") '419' RusUTF-8(ttypetdecodeR=R (t territoryNameR^R((s-/usr/lib/python2.7/site-packages/langtable.pyR^s  c Cs|s dSt|tdkr4|jd}nxMtD]E}x<t|jD]-}|jt|j|jkrO|SqOWq;WtjdtjtjB}|j |}|r}|j d}|j d}xtD]}xt|jD]}|jt|j|jkrxXt D]M}xDt |jD]5}|jt |j|jkr2|d|Sq2WqWqqWqWndS(s)Query the languageId from a translated name of a language. :param languageName: the translated name of a language :type languageName: string :rtype: string The translated name given should be a Python Unicode string or an UTF-8 encoded string. The translated name can be in any language. But there will be only a result if the translation matches exactly. **Examples:** >>> languageId("Marathi") 'mr' >>> languageId("मराठी") 'mr' >>> languageId("マラーティー語") 'mr' RusUTF-8s?^(?P[^()]+)[\s]+[(](?P[^()]+)[)]RRR( RRRPR tlowertretcompilet MULTILINEtUNICODEtsearchRR=( t languageNameRbRtlanguage_territory_patternRRRR^ticuLocaleId_territory((s-/usr/lib/python2.7/site-packages/langtable.pyRbs. #  # #"i@Bc Csqi}t}td|d|d|\}}}|r}|r}|r}|d|d|tkr}|d|d|}t}nh|r|r|d|tkr|d|}n7|r|r|d|tkr|d|}t}nd}|tkrxt|jD]}t|j|dkr||krFt|j|||>> list_locales(languageId="de") ['de_DE.UTF-8', 'de_AT.UTF-8', 'de_CH.UTF-8', 'de_BE.UTF-8', 'de_LU.UTF-8'] So this returns a list of locales for German. These lists are sorted in order of decreasing likelyhood, i.e. the most common value comes first. One can also list the possible locales for the territory “Switzerland”: >>> list_locales(territoryId="CH") ['de_CH.UTF-8', 'fr_CH.UTF-8', 'it_CH.UTF-8', 'wae_CH.UTF-8'] If one knows both, the language “German” and the territory “Switzerland”, the result is unique: >>> list_locales(languageId="de", territoryId="CH") ['de_CH.UTF-8'] RbR_R^RidiiN( RNRRPRR t extra_bonusR=RRR( tconciset show_weightsRbR_R^tranked_localest skipTerritorytlanguage_bonustlocaletterritory_bonusR((s-/usr/lib/python2.7/site-packages/langtable.pyt list_localesMsL'.        c Csi}t}td|d|d|\}}}|r=|gS|rt|rt|d|tkrt|d|}t}nd}|tkrxt|jD]}t|j|dkr||krt|j|||>> list_scripts(languageId="sr") ['Cyrl', 'Latn'] So this returns a list of scripts which are in use for Serbian. These lists are sorted in order of decreasing likelyhood, i.e. the most common value comes first. List the suitable scripts for the language “Punjabi”: >>> list_scripts(languageId="pa") ['Guru', 'Arab'] One can also list the possible scripts for a territory like “Pakistan”: >>> list_scripts(territoryId="PK") ['Arab'] If one knows both, the language “Punjabi” and the territory “Pakistan” or “India”, one can find out which script is the preferred one: >>> list_scripts(languageId="pa", territoryId="PK") ['Arab'] So the preferred script for Punjabi in Pakistan is “Arab” >>> list_scripts(languageId="pa", territoryId="IN") ['Guru', 'Arab'] and the preferred script for Punjabi in India is “Guru”. RbR_R^RidiiN( RNRRPRR RR=RRR( RRRbR_R^tranked_scriptsRRRRR((s-/usr/lib/python2.7/site-packages/langtable.pyt list_scriptssF8      c Cswi}t}td|d|d|\}}}|r}|r}|r}|d|d|tkr}|d|d|}t}nn|r|r|d|tkr|d|}t}n7|r|r|d|tkr|d|}t}nd}|tkrxt|jD]}t|j|dkr ||krLt|j|||| r>xt|jD]}t|j|dkr||krt|j|||>> list_inputmethods(languageId="ja") ['ibus/kkc', 'ibus/anthy'] So this returns a list of input methods for Japanese. These lists are sorted in order of decreasing likelyhood, i.e. the most common value comes first. One can also list the possible input methods for the territory “Japan”: >>> list_inputmethods(territoryId="JP") ['ibus/kkc', 'ibus/anthy'] RbR_R^RidiiN( RNRRPRRRR=RRR( RRRbR_R^tranked_inputmethodsRRt inputmethodRR((s-/usr/lib/python2.7/site-packages/langtable.pytlist_inputmethodssN.         c Csji}t}td|d|d|\}}}|r}|r}|r}|d|d|tkr}|d|d|}t}nh|r|r|d|tkr|d|}n7|r|r|d|tkr|d|}t}nd}|tkrxt|jD]}t|j|dkr||krFt|j|||>> list_keyboards(languageId="de") ['de(nodeadkeys)', 'de(deadacute)', 'at(nodeadkeys)', 'ch', 'be(oss)'] Listing likely X11 keyboard layouts for “Switzerland”: >>> list_keyboards(territoryId="CH") ['ch', 'ch(fr)', 'it'] When specifying both “German” *and* “Switzerland”, the returned X11 keyboard layout is unique: >>> list_keyboards(languageId="de", territoryId="CH") ['ch'] RbR_R^RiiN( RNRRPRR RR=RRR( RRRbR_R^tranked_keyboardsRRtkeyboardRR((s-/usr/lib/python2.7/site-packages/langtable.pytlist_keyboardsHsL!.         c Csji}t}td|d|d|\}}}|r}|r}|r}|d|d|tkr}|d|d|}t}nh|r|r|d|tkr|d|}n7|r|r|d|tkr|d|}t}nd}|tkrxt|jD]}t|j|dkr||krFt|j|||>> list_consolefonts(languageId="en") ['latarcyrheb-sun16'] Listing likely console fonts for Greek: >>> list_consolefonts(languageId="el") ['iso07u-16', 'LatGrkCyr-8x16'] Listing likely console fonts for Greece: >>> list_consolefonts(territoryId="GR") ['iso07u-16', 'LatGrkCyr-8x16'] Listing likely console fonts for Greek in Greece: list_consolefonts(languageId="el", territoryId="GR") ['iso07u-16'] Listing likely console fonts for Greek in a non-Greek country like the UK (the language has higher weight): >>> list_consolefonts(languageId="el", territoryId="GB") ['iso07u-16', 'LatGrkCyr-8x16', 'latarcyrheb-sun16'] RbR_R^RidiiN( RNRRPRRRR=RRR( RRRbR_R^tranked_consolefontsRRt consolefontRR((s-/usr/lib/python2.7/site-packages/langtable.pytlist_consolefontssL,.         c Csji}t}td|d|d|\}}}|r}|r}|r}|d|d|tkr}|d|d|}t}nh|r|r|d|tkr|d|}n7|r|r|d|tkr|d|}t}nd}|tkrxt|jD]}t|j|dkr||krFt|j|||>> list_timezones(territoryId="DE") ['Europe/Berlin'] >>> list_timezones(languageId="de") ['Europe/Berlin', 'Europe/Vienna', 'Europe/Zurich', 'Europe/Brussels', 'Europe/Luxembourg'] >>> list_timezones(territoryId="CH") ['Europe/Zurich'] >>> list_timezones(languageId="fr", territoryId="CH") ['Europe/Zurich'] >>> list_timezones(languageId="fr") ['Europe/Paris', 'America/Montreal', 'Europe/Brussels', 'Europe/Zurich', 'Europe/Luxembourg'] The territory gets more weight than the language: >>> list_timezones(languageId="ja", territoryId="CH") ['Europe/Zurich', 'Asia/Tokyo'] RbR_R^RiiidN( RNRRPRRRR=RRR( RRRbR_R^tranked_timezonesRRttimezoneRR((s-/usr/lib/python2.7/site-packages/langtable.pytlist_timezonessL%.         cCs|tkrt|jStS(sCheck whether a keyboard layout supports ASCII :param keyboardId: identifier for the keyboard :type keyboardId: string :rtype: string Returns True if the keyboard layout with that id can be used to type ASCII, returns false if the keyboard layout can not be used to type ASCII or if typing ASCII with that keyboard layout is difficult. **Examples:** >>> supports_ascii("jp") True >>> supports_ascii("ru") False (RHRR(Rc((s-/usr/lib/python2.7/site-packages/langtable.pytsupports_ascii8s  cCsWtj|}|rOd|jdfd|jdfd|jdfgSgSdS(s2 Internal test function, do not use this. RRRN(RRR(RaR((s-/usr/lib/python2.7/site-packages/langtable.pyt_test_cldr_locale_patternOs:c Cst|dttd|d|dt|dttd|d|ddttd|d|d|d|dt|dttd|d|dt|dttd|d|ddttd|d|d|d|GHdS( s2 Internal test function, do not use this. s: RRbs R^s +: R_N(R>treprRR(RRbR_R^((s-/usr/lib/python2.7/site-packages/langtable.pyt_test_language_territoryYss /dev/nullc Cstj}|rtj}ntjd|ddddd|t|dtt|dtt|d tt|d tt|d t dS( NRtfilemodeRtformats%(levelname)s: %(message)stlevelsterritories.xmls languages.xmls keyboards.xmls timezones.xmlstimezoneidparts.xml( RtINFOtDEBUGt basicConfigRR+RIRBRQRT(tdebugt logfilenameRt log_level((s-/usr/lib/python2.7/site-packages/langtable.pyt_initqs  t__ModuleInitializercBseZdZdZRS(cCs tdS(N(R(R((s-/usr/lib/python2.7/site-packages/langtable.pyRscCsdS(N((R((s-/usr/lib/python2.7/site-packages/langtable.pyt__del__s(RRRR(((s-/usr/lib/python2.7/site-packages/langtable.pyRs t__main__(((((((CR{RRRtxml.parsers.expatRmtxml.sax.handlerRt_datadirRRRR=RPRHRSRVRRRR R!tobjectR"R+RBRIRQRTRgRhRiRjRlRwRRRRRRRRRRRRRR^RbRRNRRRRRRRRRRRt __module_initRtdoctestttestmod(((s-/usr/lib/python2.7/site-packages/langtable.pyt(s     5  jJ55 U X #       -56 ) 2Q`JKVO