3 2aT@sddlZddlZddlZddlZddlZddlZddlZddlmZddddddd d d d d ddddddgZ ej j ej ddZ ejdejejBZddZddZdOZd(d)eed*DZd+d,d-d.ZdQd/d0Zd1d2Zd3d4Zd5d6ZGd7ddZGd8ddeZdRd:dZiZdSd;dZdTdd Z$dVd?d Z%dWd@d Z&dAd Z'dBdZ(dCd Z)dDdZ*dEdZ+dFdZ,dGdZ-dHdZ.eZ/dS)XN)ENOENTNullTranslationsGNUTranslationsCatalogfind translationinstall textdomainbindtextdomainbind_textdomain_codesetdgettext dngettextgettextlgettext ldgettext ldngettext lngettextngettextZsharelocalea (?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)N WHITESPACESINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralmokindvaluer",/opt/alt/python36/lib64/python3.6/gettext.py _tokenizeTs   r$cCs|rtd|StdSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)r!r"r"r#_error_s r%||&&==!=<><=>=+-*/%cCs i|]\}}|D] }||qqSr"r").0iZopsopr"r"r# msr6orandz//)z||z&&r1c Csd}t|}x|dkr(|d7}t|}qW|dkr\t|\}}d||f}|dkrtdnP|dkrrd ||f}n:yt|d }Wntk rt|dYnXd ||f}t|}d }xh|tkr t|}||krP|dkr|dkrd|}tj||}t||d\} }d||| f}|}qW||ko6dknrFd|}|dkr|dkrt|d\} }|dkrzt|t|\} }d| || f}|dkrd|}||fS)Nr!znot (z%s(%s))z%unbalanced parenthesis in plural formnz%s%s z%s%ddz(%s)r7z%s %s %s?r:z%s if %s else %s)r@rA)r@rA)next_parserintr% _binary_ops _c2py_opsget) tokenspriorityresultnexttoksubr!jr4r5rightif_trueif_falser"r"r#rEpsP           rEc Cs:y t|}Wn(tk r4td|jjfdYnX|S)Nz'Plural value must be an integer, got %s)round TypeError __class____name__)r=r4r"r"r#_as_ints  rWc Cst|dkrtdy~tt|\}}|r2t|d}x>|D]6}|dkrb|d7}|dkrrtdq<|dkr<|d8}qt|D]\}}!t |!||||f<qWnt |||t ||<| d7} | d7} qWdS)NnamercSs t|dkS)Nr7)rF)r=r"r"r#Usz(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number zFile is corrupt rCr7 z content-typezcharset=z plural-forms;zplural=ascii)structunpackgetattr_catalogrreadrZLE_MAGICBE_MAGICOSErrorrVERSIONSstrrfsplitdecodestriplowerrvrwr` enumerate)"rzr{rfilenamecatalogbufbuflenmagicrmsgcount masteridxtransidxii major_version minor_versionr4mlenmoffmendtlentofftendmsgrlastkb_itemitemkvrrrrxr"r"r#rENsr                     zGNUTranslations._parsecCsRt}|jj||}||kr2|jr.|jj|S|}|jrD|j|jS|jtjS)N) objectrrIryrrxrrr)rzrmissingrr"r"r#rs  zGNUTranslations.lgettextc Csvy|j||j|f}Wn<tk rT|jr>|jj|||S|dkrL|}n|}YnX|jrh|j|jS|jtjS)Nr7) rrKeyErrorryrrxrrr)rzrrr=rr"r"r#rs  zGNUTranslations.lngettextcCs6t}|jj||}||kr2|jr.|jj|S|S|S)N)rrrIryr)rzrrrr"r"r#rs zGNUTranslations.gettextc CsZy|j||j|f}Wn<tk rT|jr>|jj|||S|dkrL|}n|}YnX|S)Nr7)rrrryr)rzrrr=rr"r"r#rs zGNUTranslations.ngettextN)rr7) rVrrrrrrrErrrrr"r"r"r#rBsT  Fc Cs|dkr t}|dkrTg}x(dD] }tjj|}|r|jd}PqWd|krT|jdg}x0|D](}x"t|D]}||krl|j|qlWq^W|rg} nd} xL|D]D}|dkrPtjj||dd|} tjj | r|r| j| q| SqW| S) NLANGUAGELC_ALL LC_MESSAGESLANGrCCz%s.mo)rrrr) _default_localedirosenvironrIrrgrupathjoinexists) domain localedir languagesallenvarrtnelangslangnelangrLmofiler"r"r#rs8        c Cs|dkr t}t|||dd}|s6|r*tSttd|d}x|D]|}|tjj|f} tj | } | dkrt |d} tj | || } WdQRXt j | } |r| j ||dkr| }q@|j| q@W|S)NT)rz$No translation file found for domainrb)rrrrrrrabspath _translationsrIopen setdefaultcopyrr}) rrrclass_r~rpmofilesrLrkeytr{r"r"r#rs*      cCst||d|d}|j|dS)NT)r~rp)rr)rrrprrr"r"r#rsmessagescCs|dk r |atS)N)_current_domain)rr"r"r#r 'scCs|dk r|t|<tj|tS)N) _localedirsrIr)rrr"r"r#r .scCs|dk r|t|<tj|S)N)_localecodesetsrI)rrpr"r"r#r 5sc Cs@y t|tj|dtj|d}Wntk r4|SX|j|S)N)rp)rrrIrrr)rrrr"r"r#r <s c CsRtj|}yt|tj|d|d}Wn"tk rF|j|pBtjSX|j|S)N)rp) rrIrrrrrrr)rrrprr"r"r#rDs  c CsTy t|tj|dtj|d}Wn$tk rD|dkr<|S|SYnX|j|||S)N)rpr7)rrrIrrr)rrrr=rr"r"r#r Ls c Cshtj|}yt|tj|d|d}Wn4tk rX|dkrB|}n|}|j|pTtjSX|j|||S)N)rpr7) rrIrrrrrrr)rrrr=rprrr"r"r#rWs cCs tt|S)N)r r)rr"r"r#rcscCs tt|S)N)rr)rr"r"r#rfscCstt|||S)N)r r)rrr=r"r"r#riscCstt|||S)N)rr)rrr=r"r"r#rlsr&r'r(r)r*r+r,r-r.r/r0r1r2)rrrrrr)r)NNF)NNNFN)NNN)N)N)N)0rriorrrsyserrnor__all__rr base_prefixrcompileVERBOSEDOTALLrr$r%rGrrHrErWr`rurrrrrrrrrr r r r rr rrrrrrr"r"r"r#1s\8         1$*K &