U .‘cjã@s¶dZddlZddlZddlZddlZddddddd d d d d ddddddddddgZej ejdd¡Z e  dej ej B¡Z dd„Zdd„ZdZd d!„eed"ƒDƒZd#d$d%d&œZdGd(d)„Zd*d+„Zd,d-„Zd.d/„ZGd0d„dƒZGd1d„deƒZdHd3d„ZiZd4gZdddd2efd5d„Zdedfd6d„Ziaiad7a dId8d „Z!dJd9d „Z"dKd:d „Z#d;d „Z$dd„Z'd?d„Z(d@d„Z)dAd„Z*dBd„Z+dCd„Z,dDd„Z-dEd„Z.dFd„Z/eZ0dS)LaªInternationalization and localization support. This module provides internationalization (I18N) and localization (L10N) support for your Python programs by providing an interface to the GNU gettext message catalog library. I18N refers to the operation by which a program is made aware of multiple languages. L10N refers to the adaptation of your program, once internationalized, to the local language and cultural habits. éNÚNullTranslationsÚGNUTranslationsÚCatalogÚfindÚ translationÚinstallÚ textdomainÚbindtextdomainÚbind_textdomain_codesetÚdgettextÚ dngettextÚgettextÚlgettextÚ ldgettextÚ ldngettextÚ lngettextÚngettextÚpgettextÚ dpgettextÚ npgettextÚ dnpgettextZshareÚlocaleaÊ (?P[ \t]+) | # spaces and horizontal tabs (?P[0-9]+\b) | # decimal integer (?Pn\b) | # only n is allowed (?P[()]) | (?P[-*/%+?:]|[>, # <=, >=, ==, !=, &&, ||, # ? : # unary and bitwise ops # not allowed (?P\w+|.) # invalid token ccsPt t|¡D]8}|j}|dkr q | |¡}|dkr>td|ƒ‚|Vq dVdS)NZ WHITESPACESZINVALIDz invalid token in plural form: %sÚ)ÚreÚfinditerÚ_token_patternÚ lastgroupÚgroupÚ ValueError)ÚpluralZmoZkindÚvalue©r!ú,/opt/alt/python38/lib64/python3.8/gettext.pyÚ _tokenizeWs  r#cCs|rtd|ƒStdƒSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)r r!r!r"Ú_errorbs r$))ú||)ú&&)z==z!=)ú<ú>z<=z>=)ú+ú-)Ú*ú/ú%cCs i|]\}}|D] }||“qqSr!r!)Ú.0ÚiZopsÚopr!r!r"Ú ps r1éÚorÚandz//)r%r&r,éÿÿÿÿc Cs¨d}t|ƒ}|dkr&|d7}t|ƒ}q |dkrXt|ƒ\}}d||f}|dkr¨tdƒ‚nP|dkrnd ||f}n:zt|d ƒ}Wntk ršt|ƒd‚YnXd ||f}t|ƒ}d }|tkrt|}||krÒq|d krê|d krêd|}t ||¡}t||dƒ\} }d||| f}|}q´||kr4dkr@nnd|}|dkr |dkr t|dƒ\} }|dkrtt|ƒ‚t|ƒ\} }d| || f}|dkr d|}||fS)Nrú!znot ú(z%s(%s)ú)z%unbalanced parenthesis in plural formÚnz%s%sé z%s%déd)ééz(%s)r2z%s %s %sr=ú?rú:z%s if %s else %s)ÚnextÚ_parserÚintr$Ú _binary_opsÚ _c2py_opsÚget) ÚtokensZpriorityÚresultÚnexttokÚsubr Újr/r0ÚrightZif_trueZif_falser!r!r"rAssP          rAcCsZz t|ƒ}Wn(tk r4td|jjfƒd‚YnXddl}| d|jjftd¡|S)Nz'Plural value must be an integer, got %srr=)ÚroundÚ TypeErrorÚ __class__Ú__name__ÚwarningsÚwarnÚDeprecationWarning)r9r/rPr!r!r"Ú_as_int¤s  ÿÿÿþrScCs²t|ƒdkrtdƒ‚z|tt|ƒƒ\}}|r2t|ƒ‚d}|D]6}|dkr`|d7}|dkrptdƒ‚q:|dkr:|d8}q:d ti}td ||ƒ|d WStk r¬tdƒ‚YnXd S) z‰Gets a C expression as used in PO files for plural forms and returns a Python function that implements an equivalent expression. ièz"plural form expression is too longrr7r2éz%plural form expression is too complexr8rSz›if True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) ÚfuncN)ÚlenrrAr#r$rSÚexecÚRecursionError)rrGrHZdepthÚcÚnsr!r!r"Úc2py°s.   ûû r[c Cs4t |¡}d}d}d}d}| d¡}|dkrN||d…}|d|…}||O}nd}| d¡}|dkr†||d…}|d|…}||O}nd}| d¡}|dkr¾||d…}|d|…}||O}nd}|} g} t|dƒD]P} | |@sÖ| } | |@rø| |7} | |@r | |7} | |@r| |7} |  | ¡qÖ|  ¡| S) Nr2ér=rú@rÚ.Ú_)rÚ normalizerÚrangeÚappendÚreverse) ZlocZCOMPONENT_CODESETZCOMPONENT_TERRITORYZCOMPONENT_MODIFIERÚmaskÚposZmodifierÚcodesetZ territoryZlanguageZretr/Úvalr!r!r"Ú _expand_langÔsJ                 rhc@s€eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zddd„ZdS) rNcCs.i|_d|_d|_d|_|dk r*| |¡dS©N)Ú_infoÚ_charsetÚ_output_charsetÚ _fallbackrA©ÚselfÚfpr!r!r"Ú__init__ÿs zNullTranslations.__init__cCsdSrir!rnr!r!r"rAszNullTranslations._parsecCs|jr|j |¡n||_dSri)rmÚ add_fallback)roÚfallbackr!r!r"rr szNullTranslations.add_fallbackcCs|jr|j |¡S|Sri)rmr )roÚmessager!r!r"r s zNullTranslations.gettextc Csrddl}| dtd¡|jrR| ¡(| ddt¡|j |¡W5QR£SQRX|jrd| |j¡S| t   ¡¡S)Nrú/lgettext() is deprecated, use gettext() insteadr\Úignoreú.*\blgettext\b.*) rPrQrRrmÚcatch_warningsÚfilterwarningsrrlÚencoderÚgetpreferredencoding)rortrPr!r!r"rsÿ ÿ zNullTranslations.lgettextcCs*|jr|j |||¡S|dkr"|S|SdS©Nr2)rmr)roÚmsgid1Úmsgid2r9r!r!r"r"s zNullTranslations.ngettextc Csˆddl}| dtd¡|jrV| ¡,| ddt¡|j |||¡W5QR£SQRX|dkrd|}n|}|jrz| |j¡S| t   ¡¡S)Nrú1lngettext() is deprecated, use ngettext() insteadr\rvú.*\blngettext\b.*r2) rPrQrRrmrxryrrlrzrr{©ror}r~r9rPÚtmsgr!r!r"r*s"ÿ ÿ" zNullTranslations.lngettextcCs|jr|j ||¡S|Sri)rmr)roÚcontextrtr!r!r"r;szNullTranslations.pgettextcCs,|jr|j ||||¡S|dkr$|S|SdSr|)rmr)rorƒr}r~r9r!r!r"r@s zNullTranslations.npgettextcCs|jSri)rj©ror!r!r"ÚinfoHszNullTranslations.infocCs|jSri)rkr„r!r!r"ÚcharsetKszNullTranslations.charsetcCsddl}| dtd¡|jS)Nrzoutput_charset() is deprecatedr\©rPrQrRrl)rorPr!r!r"Úoutput_charsetNs ÿzNullTranslations.output_charsetcCs ddl}| dtd¡||_dS)Nrz"set_output_charset() is deprecatedr\r‡)ror†rPr!r!r"Úset_output_charsetTs ÿz#NullTranslations.set_output_charsetcCsRddl}|j|jd<|dk rNddddddh}|t|ƒ@D]}t||ƒ|j|<q8dS) Nrr_r rrrrr)Úbuiltinsr Ú__dict__ÚsetÚgetattr)roÚnamesrŠZallowedÚnamer!r!r"rZs ÿzNullTranslations.install)N)N)rOÚ __module__Ú __qualname__rqrArrr rrrrrr…r†rˆr‰rr!r!r!r"rþs  c@s\eZdZdZdZdZdZdd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)rlÞ*l•$<z%s%s)rr2cCs|d?|d@fS)z/Returns a tuple of major version, minor versionéiÿÿr!)roÚversionr!r!r"Ú _get_versionspszGNUTranslations._get_versionsc"Csöddlm}t|ddƒ}i|_}dd„|_| ¡}t|ƒ}|d|dd …ƒd}||jkr||d |d d …ƒ\}} } } d } n6||jkr¦|d |d d …ƒ\}} } } d} n t dd|ƒ‚|  |¡\} }| |j krÞt ddt | ƒ|ƒ‚t d| ƒD]}|| || | d…ƒ\}}||}|| || | d…ƒ\}}||}||kr`||kr`|||…}|||…}n t dd|ƒ‚|dkrld}| d¡D]æ}| ¡ ¡}|sžq„| d¡rº| d¡rºq„d}}d|kr| dd¡\}}| ¡ ¡}| ¡}||j|<|}n|r|j|d|7<|dkr8| d¡d|_n0|dkr„| d¡}|d d¡d}t|ƒ|_q„|jpvd}d|krÌ| d¡\}} | d¡}t ||ƒ}t|ƒD]\}}!t |!|ƒ|||f<q¬nt ||ƒ|t ||ƒ<| d7} | d7} qèdS)z8Override this method to support alternative .mo formats.r)ÚunpackrrcSs t|dkƒSr|)rB)r9r!r!r"Ú}óz(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number ézFile is corruptó z #-#-#-#-#r?r2Ú z content-typezcharset=z plural-formsú;zplural=Úasciió)Zstructr•rÚ_catalogrÚreadrVÚLE_MAGICÚBE_MAGICÚOSErrorr”ÚVERSIONSÚstrraÚsplitÚdecodeÚstripÚ startswithÚendswithÚlowerrjrkr[Ú enumerate)"rorpr•ÚfilenameZcatalogZbufZbuflenÚmagicr“ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr/ZmlenZmoffZmendZtlenZtoffZtendÚmsgr‚ZlastkZb_itemÚitemÚkÚvrr†r}r~Úxr!r!r"rAtsv                      zGNUTranslations._parsecCshddl}| dtd¡tƒ}|j ||¡}||krH|jrD|j |¡S|}|jrZ|  |j¡S|  t   ¡¡S)Nrrur\) rPrQrRÚobjectržrErmrrlrzrr{)rortrPÚmissingr‚r!r!r"rÍsÿ  zGNUTranslations.lgettextcCsddl}| dtd¡z|j|| |¡f}Wn@tk rn|jrX|j |||¡YS|dkrf|}n|}YnX|jr‚|  |j¡S|  t   ¡¡S)Nrrr\r2) rPrQrRržrÚKeyErrorrmrrlrzrr{rr!r!r"rÛs ÿ  zGNUTranslations.lngettextcCs6tƒ}|j ||¡}||kr2|jr.|j |¡S|S|Sri)r³ržrErmr )rortr´r‚r!r!r"r ìs zGNUTranslations.gettextcCs^z|j|| |¡f}Wn@tk rX|jrB|j |||¡YS|dkrP|}n|}YnX|Sr|)ržrrµrmr)ror}r~r9r‚r!r!r"rõs zGNUTranslations.ngettextcCsF|j||f}tƒ}|j ||¡}||krB|jr>|j ||¡S|S|Sri)ÚCONTEXTr³ržrErmr)rorƒrtÚ ctxt_msg_idr´r‚r!r!r"rszGNUTranslations.pgettextc Csn|j||f}z|j|| |¡f}WnBtk rh|jrR|j ||||¡YS|dkr`|}n|}YnX|Sr|)r¶ržrrµrmr)rorƒr}r~r9r·r‚r!r!r"r s zGNUTranslations.npgettextN)rOrr‘r r¡r¶r£r”rArrr rrrr!r!r!r"rdsY   Fc Csâ|dkr t}|dkrRg}dD]"}tj |¡}|r| d¡}q@qd|krR| d¡g}|D]$}t|ƒD]}||krf| |¡qfqZ|rŠg} nd} |D]J}|dkr¢qÞtj ||dd|¡} tj  | ¡r’|rÔ|  | ¡q’| Sq’| S)N)ZLANGUAGEÚLC_ALLÚ LC_MESSAGESZLANGr?ÚCr¹z%s.mo) Ú_default_localedirÚosÚenvironrEr¥rbrhÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallZenvarrgZnelangsZlangZnelangrGÚmofiler!r!r"rs8       Z unspecifiedc Cs|dkr t}t|||dd}|sB|r*tƒSddlm}t|d|ƒ‚d}|D]Æ} |tj | ¡f} t   | ¡} | dkr–t | dƒ} t   | || ƒ¡} W5QRXddl } |   | ¡} |tk röddl}| dtd¡|rö| ¡| d d t¡|  |¡W5QRX|dkr| }qJ| | ¡qJ|S) NT)rÄr)ÚENOENTz$No translation file found for domainÚrbzparameter codeset is deprecatedr\rvz.*\bset_output_charset\b.*)rrrÚerrnorÆÚFileNotFoundErrorr¼r¾ÚabspathÚ _translationsrEÚopenÚ setdefaultÚcopyÚ _unspecifiedrPrQrRrxryr‰rr)rÁrÂrÃZclass_rsrfZmofilesrÆrGrÅÚkeyÚtrprÎrPr!r!r"rCsH ÿ   ÿ ÿ  cCst||d|d}| |¡dS)NT)rsrf)rr)rÁrÂrfrŽrÑr!r!r"rnsZmessagescCs|dk r |atSri)Ú_current_domain)rÁr!r!r"r|scCs|dk r|t|<t |t¡Sri)Ú _localedirsrEr»)rÁrÂr!r!r"r ƒscCs0ddl}| dtd¡|dk r&|t|<t |¡S)Nrz'bind_textdomain_codeset() is deprecatedr\)rPrQrRÚ_localecodesetsrE)rÁrfrPr!r!r"r ŠsÿcCs:zt|t |d¡ƒ}Wntk r.|YSX| |¡Sri)rrÓrEr¢r )rÁrtrÑr!r!r"r ”s  c Cs¼ddl}| dtd¡t |¡}z<| ¡*| ddt¡t|t |d¡|d}W5QRXWn&t k r‚|  |pzt   ¡¡YSX| ¡&| ddt¡|  |¡W5QR£SQRXdS)Nrz1ldgettext() is deprecated, use dgettext() insteadr\rvú.*\bparameter codeset\b.*©rfrw)rPrQrRrÔrErxryrrÓr¢rzrr{r)rÁrtrPrfrÑr!r!r"r›s&ÿ  ÿ$ ÿcCsRzt|t |d¡ƒ}Wn,tk rB|dkr6|YS|YSYnX| |||¡Sr|)rrÓrEr¢r)rÁr}r~r9rÑr!r!r"r ¬sc CsÒddl}| dtd¡t |¡}z<| ¡*| ddt¡t|t |d¡|d}W5QRXWn8t k r”|dkrz|}n|}|  |pŒt   ¡¡YSX| ¡*| ddt¡|  |||¡W5QR£SQRXdS) Nrz3ldngettext() is deprecated, use dngettext() insteadr\rvrÕrÖr2r€)rPrQrRrÔrErxryrrÓr¢rzrr{r)rÁr}r~r9rPrfrÑr‚r!r!r"r¶s,ÿ  ÿ$ ÿcCs<zt|t |d¡ƒ}Wntk r.|YSX| ||¡Sri)rrÓrEr¢r)rÁrƒrtrÑr!r!r"rÌs  cCsTzt|t |d¡ƒ}Wn,tk rB|dkr6|YS|YSYnX| ||||¡Sr|)rrÓrEr¢r)rÁrƒr}r~r9rÑr!r!r"rÔscCs tt|ƒSri)r rÒ)rtr!r!r"r ßsc CsNddl}| dtd¡| ¡&| ddt¡tt|ƒW5QR£SQRXdS)Nrrur\rvz.*\bldgettext\b.*)rPrQrRrxryrrÒ)rtrPr!r!r"râsÿ ÿcCstt|||ƒSri)r rÒ)r}r~r9r!r!r"rësc CsRddl}| dtd¡| ¡*| ddt¡tt|||ƒW5QR£SQRXdS)Nrrr\rvz.*\bldngettext\b.*)rPrQrRrxryrrÒ)r}r~r9rPr!r!r"rîsÿ ÿcCs tt||ƒSri)rrÒ)rƒrtr!r!r"røscCstt||||ƒSri)rrÒ)rƒr}r~r9r!r!r"rüs)r5)NNF)N)N)N)1Ú__doc__rr¼rÚsysÚ__all__r¾r¿Ú base_prefixr»ÚcompileÚVERBOSEÚDOTALLrr#r$rCr«rDrArSr[rhrrrrËrÏrrrÓrÔrÒrr r r rr rrrr rrrrrrr!r!r!r"Úsˆ0û  õ    1 $*f7 &ÿ +