grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \Tã@sœdZddlZddlZddlZddlZddlZddlZddlZddlm Z dddddd d d d d dddddddgZ ej j ej ddƒZejdejejBƒZdd„Zdd„ZdPZd)d*„eed+ƒDƒZd,d-d.d/œZdRd0d1„Zd2d3„Zd4d5„Zd6d7„ZGd8d„dƒZGd9d„deƒZdSd;d„ZiZdTda$dVd?d „Z%dWd@d „Z&dXdAd „Z'dBd „Z(dCd„Z)dDd„Z*dEd„Z+dFd„Z,dGd„Z-dHd„Z.dId„Z/e Z0dS)Yaª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)ÚENOENTÚNullTranslationsÚGNUTranslationsÚCatalogÚfindÚ translationÚinstallÚ textdomainÚbindtextdomainÚbind_textdomain_codesetÚdgettextÚ dngettextÚgettextÚlgettextÚ ldgettextÚ ldngettextÚ lngettextÚngettextZshareÚ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 ccsTxHtjt|ƒD]8}|j}|dkr"q|j|ƒ}|dkr@td|ƒ‚|VqWdVdS)NZ WHITESPACESZINVALIDz invalid token in plural form: %sÚ)ÚreÚfinditerÚ_token_patternÚ lastgroupÚgroupÚ ValueError)ÚpluralZmoZkindÚvalue©rú/usr/lib64/python3.6/gettext.pyÚ _tokenizeTs   r cCs|rtd|ƒStdƒSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)rrrrÚ_error_s r!ú||ú&&ú==ú!=ú<ú>ú<=ú>=ú+ú-Ú*ú/ú%cCs i|]\}}|D] }||“qqSrr)Ú.0ÚiZopsÚoprrrú msr2éÚorÚandz//)z||z&&r-c Cs®d}t|ƒ}x|dkr(|d7}t|ƒ}qW|dkr\t|ƒ\}}d||f}|dkr¬tdƒ‚nP|dkrrd ||f}n:yt|d ƒ}Wntk ržt|ƒd‚YnXd ||f}t|ƒ}d }xh|tk�r t|}||krÖP|dkrî|dkrîd|}tj||ƒ}t||dƒ\} }d||| f}|}qºW||k�o6dkn�rFd|}|dk�r¦|dk�r¦t|dƒ\} }|dk�rzt|ƒ‚t|ƒ\} }d| || f}|dk�r¦d|}||fS)Nrú!znot ú(z%s(%s)ú)z%unbalanced parenthesis in plural formÚnz%s%sé z%s%dédééz(%s)r3z%s %s %sú?rú:z%s if %s else %s)r<r=)r<r=)ÚnextÚ_parserÚintr!Ú _binary_opsÚ _c2py_opsÚget) ÚtokensZpriorityÚresultÚnexttokÚsubrÚjr0r1ÚrightZif_trueZif_falserrrrApsP           rAc Cs:y t|ƒ}Wn(tk r4td|jjfƒd‚YnX|S)Nz'Plural value must be an integer, got %s)ÚroundÚ TypeErrorÚ __class__Ú__name__)r9r0rrrÚ_as_int¡s  rPc Cs´t|ƒdkrtdƒ‚y~tt|ƒƒ\}}|r2t|ƒ‚d}x>|D]6}|dkrb|d7}|dkrrtdƒ‚q<|dkr<|d8}qt|ƒD]\}}!t |!|ƒ|||f<�q”Wnt ||ƒ|t ||ƒ<| d7} | d7} qæWdS)z8Override this method to support alternative .mo formats.ÚnamercSs t|dkƒS)Nr3)rB)r9rrrÚUsz(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number ézFile is corruptó r?r3Ú z content-typezcharset=z plural-formsú;zplural=Úasciió)ÚstructÚunpackÚgetattrÚ_catalogrÚreadrSÚLE_MAGICÚBE_MAGICÚOSErrorr‚ÚVERSIONSÚstrr]ÚsplitÚdecodeÚstripÚlowerrfrgrXÚ enumerate)"rjrkrŒÚfilenameZcatalogZbufZbuflenÚmagicr�ZmsgcountZ masteridxZtransidxZiiZ major_versionZ minor_versionr0ZmlenZmoffZmendZtlenZtoffZtendÚmsgrtZlastkZb_itemÚitemÚkÚvrrvrrrsÚxrrrrANsr                     zGNUTranslations._parsecCsRtƒ}|jj||ƒ}||kr2|jr.|jj|ƒS|}|jrD|j|jƒS|jtjƒƒS)N) ÚobjectrŽrErirrhrprrq)rjroÚmissingrtrrrr¢s  zGNUTranslations.lgettextc Csvy|j||j|ƒf}Wn<tk rT|jr>|jj|||ƒS|dkrL|}n|}YnX|jrh|j|jƒS|jtjƒƒS)Nr3) rŽrÚKeyErrorrirrhrprrq)rjrrrsr9rtrrrr­s  zGNUTranslations.lngettextcCs6tƒ}|jj||ƒ}||kr2|jr.|jj|ƒS|S|S)N)r¡rŽrErir)rjror¢rtrrrr»s zGNUTranslations.gettextc CsZy|j||j|ƒf}Wn<tk rT|jr>|jj|||ƒS|dkrL|}n|}YnX|S)Nr3)rŽrr£rir)rjrrrsr9rtrrrrÄs zGNUTranslations.ngettextN)rr3) rOr~rr�r‘r“r‚rArrrrrrrrrBsT  Fc Csê|dkr t}|dkrTg}x(dD] }tjj|ƒ}|r|jdƒ}PqWd|krT|jdƒg}x0|D](}x"t|ƒD]}||krl|j|ƒqlWq^W|r”g} nd} xL|D]D}|dkr¬Ptjj||dd|ƒ} tjj | ƒrž|rÞ| j| ƒqž| SqžW| S) NÚLANGUAGEÚLC_ALLÚ LC_MESSAGESÚLANGr?ÚCz%s.mo)r¤r¥r¦r§) Ú_default_localedirÚosÚenvironrEr•r^reÚpathÚjoinÚexists) ÚdomainÚ localedirÚ languagesÚallZenvarrdZnelangsZlangZnelangrGÚmofilerrrrÒs8        c CsÄ|dkr t}t|||dd�}|s6|r*tƒSttd|ƒ‚d}x„|D]|}|tjj|ƒf} tj | ƒ} | dkrŒt |dƒ�} tj | || ƒƒ} WdQRXt j | ƒ} |r¤| j |ƒ|dkr²| }q@|j| ƒq@W|S)NT)r²z$No translation file found for domainÚrb)rrrr’rrªr¬ÚabspathÚ _translationsrEÚopenÚ setdefaultÚcopyrxrm) r¯r°r±Zclass_rnrcZmofilesrGr³ÚkeyÚtrkrrrrús*      cCst||d|d�}|j|ƒdS)NT)rnrc)rr)r¯r°rcr}r»rrrrsZmessagescCs|dk r |atS)N)Ú_current_domain)r¯rrrr 'scCs|dk r|t|<tj|tƒS)N)Ú _localedirsrEr©)r¯r°rrrr .scCs|dk r|t|<tj|ƒS)N)Ú_localecodesetsrE)r¯rcrrrr 5sc Cs@y t|tj|dƒtj|ƒd�}Wntk r4|SX|j|ƒS)N)rc)rr½rEr¾r’r)r¯ror»rrrr <s c CsRtj|ƒ}yt|tj|dƒ|d�}Wn"tk rF|j|pBtjƒƒSX|j|ƒS)N)rc) r¾rErr½r’rprrqr)r¯rorcr»rrrrDs  c CsTy t|tj|dƒtj|ƒd�}Wn$tk rD|dkr<|S|SYnX|j|||ƒS)N)rcr3)rr½rEr¾r’r)r¯rrrsr9r»rrrr Ls c Cshtj|ƒ}yt|tj|dƒ|d�}Wn4tk rX|dkrB|}n|}|j|pTtjƒƒSX|j|||ƒS)N)rcr3) r¾rErr½r’rprrqr)r¯rrrsr9rcr»rtrrrrWs cCs tt|ƒS)N)r r¼)rorrrrcscCs tt|ƒS)N)rr¼)rorrrrfscCstt|||ƒS)N)r r¼)rrrsr9rrrriscCstt|||ƒS)N)rr¼)rrrsr9rrrrls©r"©r#©r$r%©r&r'r(r)©r*r+©r,r-r.)r¿rÀrÁrÂrÃrÄéÿÿÿÿ)rÅ)NNF)NNNFN)NNN)N)N)N)1Ú__doc__rr¹Úiorªrr‹ÚsysÚerrnorÚ__all__r¬r­Ú base_prefixr©ÚcompileÚVERBOSEÚDOTALLrr r!rCr™rDrArPrXrerrrr¶rrr½r¾r¼r r r r rr rrrrrrrrrrÚ s^&8         1$*K &