]T@svddlZddlZddlZddlZddlZddlZddlZddlmZddddddd d d d d ddddddgZ ej j ej ddZ ejdejejBZddZddZdNZd(d)eed*DZdd+dd,d&d-iZdOd.d/Zd0d1Zd2d3Zd4d5ZGd6ddZGd7ddeZddd8d9dZiZdddd8dd:dZdddd;dZ ia!ia"d<a#dd=d Z$dd>d Z%dd?d Z&d@d Z'dAdZ(dBd Z)dCdZ*dDdZ+dEdZ,dFdZ-dGdZ.eZ/dS)PN)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 ccsnxbtjt|D]N}|j}|dkr1q|j|}|dkr\td||VqWdVdS)N WHITESPACESINVALIDz invalid token in plural form: %s)refinditer_token_pattern lastgroupgroup ValueError)pluralmokindvaluer",/opt/alt/python35/lib64/python3.5/gettext.py _tokenizeTs    r$cCs"|rtd|StdSdS)Nz#unexpected token in plural form: %szunexpected end of plural form)r)r!r"r"r#_error_sr%||&&==!=<><=>=+-*/%cCs,i|]"\}}|D]}||qqSr"r").0iZopsopr"r"r# ms r6orandz//c Cs<d}t|}x&|dkr:|d7}t|}qW|dkrt|\}}d||f}|dkrtdnf|dkrd ||f}nGyt|d }Wn!tk rt|dYnXd ||f}t|}d }x|tkrt|}||kr"P|dkrD|dkrDd|}tj||}t||d\} }d||| f}|}qW||kodknrd|}|dkr2|dkr2t|d\} }|dkrt|t|\} }d| || f}|dkr2d|}||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 CsEyt|}Wn.tk r@td|jjfdYnX|S)Nz'Plural value must be an integer, got %s)round TypeError __class____name__)r=r4r"r"r#_as_ints  rWc Cst|dkrtdytt|\}}|rKt|d}xU|D]M}|dkr|d7}|dkrtdqX|dkrX|d8}qXWd ti}td |||d SWntk rtdYnXdS) Niz"plural form expression is too longrr;r7z%plural form expression is too complexr<rWzif True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) func)lenrrEr$r%rWexecRecursionError)rrLrMdepthcnsr"r"r#c2pys(          r`c Cstj|}d}d }d }d}|jd}|dkro||d}|d|}||O}nd}|jd}|dkr||d}|d|}||O}nd}|jd}|dkr ||d}|d|}||O}nd}|} g} xrt|dD]`} | |@s.| } | |@rY| |7} | |@rm| |7} | |@r| |7} | j| q.W| j| S) Nr7r@r._r7rarA)r normalizerrangeappendreverse) locCOMPONENT_CODESETCOMPONENT_TERRITORYCOMPONENT_MODIFIERmaskposmodifiercodeset territorylanguageretr4valr"r"r# _expand_langsJ           ruc@seZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ dddZdS)rNcCsAi|_d|_d|_d|_|dk r=|j|dS)N)_info_charset_output_charset _fallbackrE)selffpr"r"r#__init__s      zNullTranslations.__init__cCsdS)Nr")rzr{r"r"r#rEszNullTranslations._parsecCs)|jr|jj|n ||_dS)N)ry add_fallback)rzfallbackr"r"r#r}s zNullTranslations.add_fallbackcCs|jr|jj|S|S)N)ryr)rzmessager"r"r#r s zNullTranslations.gettextcCsE|jr|jj|S|jr2|j|jS|jtjS)N)ryrrxencodergetpreferredencoding)rzrr"r"r#rs   zNullTranslations.lgettextcCs7|jr|jj|||S|dkr/|S|SdS)Nr7)ryr)rzmsgid1msgid2r=r"r"r#rs   zNullTranslations.ngettextcCsf|jr|jj|||S|dkr4|}n|}|jrS|j|jS|jtjS)Nr7)ryrrxrrr)rzrrr=tmsgr"r"r#rs    zNullTranslations.lngettextcCs|jS)N)rv)rzr"r"r#info(szNullTranslations.infocCs|jS)N)rw)rzr"r"r#charset+szNullTranslations.charsetcCs|jS)N)rx)rzr"r"r#output_charset.szNullTranslations.output_charsetcCs ||_dS)N)rx)rzrr"r"r#set_output_charset1sz#NullTranslations.set_output_charsetcCsddl}|j|jdUsz(GNUTranslations._parse..z4Iz>IIzBad magic numberzBad version number zFile is corrupts rCr7 z content-typezcharset=z plural-forms;zplural=asciis)structunpackgetattr_catalogrreadrZLE_MAGICBE_MAGICOSErrorrVERSIONSstrrfsplitdecodestriplowerrvrwr` enumerate)"rzr{rfilenamecatalogbufbuflenmagicrmsgcount masteridxtransidxii major_version minor_versionr4mlenmoffmendtlentofftendmsgrlastkb_itemitemkvrrrrxr"r"r#rENsr    % % # #             zGNUTranslations._parsecCsut}|jj||}||krI|jrC|jj|S|}|jrb|j|jS|jtjS)N) objectrrIryrrxrrr)rzrmissingrr"r"r#rs    zGNUTranslations.lgettextc Csy |j||j|f}WnLtk rn|jrO|jj|||S|dkrd|}n|}YnX|jr|j|jS|jtjS)Nr7) rrKeyErrorryrrxrrr)rzrrr=rr"r"r#rs       zGNUTranslations.lngettextcCsKt}|jj||}||krG|jrC|jj|S|S|S)N)rrrIryr)rzrrrr"r"r#rs   zGNUTranslations.gettextc Cssy |j||j|f}WnLtk rn|jrO|jj|||S|dkrd|}n|}YnX|S)Nr7)rrrryr)rzrrr=rr"r"r#rs      zGNUTranslations.ngettextN)rr7) rVrrrrrrrErrrrr"r"r"r#rBs   T  Fc Cs?|dkrt}|dkrvg}x6dD].}tjj|}|r+|jd}Pq+Wd|krv|jdg}x>|D]6}x-t|D]}||kr|j|qWqW|rg} nd} xf|D]^}|dkrPtjj||dd|} tjj | r|r3| j| q| SqW| S) NLANGUAGELC_ALL LC_MESSAGESLANGrCCz%s.mo)rrrr) _default_localedirosenvironrIrrgrupathjoinexists) domain localedir languagesallenvarrtnelangslangnelangrLmofiler"r"r#rs8          c Cs|dkrt}t|||dd}|sO|r=tSttd|d}x|D]}|tjj|f} tj | } | dkrt |d} tj | || } WdQRXt j | } |r| j ||dkr| }q\|j| q\W|S)NrTz$No translation file found for domainrb)rrrrrrrabspath _translationsrIopen setdefaultcopyrr}) rrrclass_r~rpmofilesrLrkeytr{r"r"r#rs*      cCs,t||ddd|}|j|dS)Nr~Trp)rr)rrrprrr"r"r#rsmessagescCs|dk r|atS)N)_current_domain)rr"r"r#r 's cCs&|dk r|t|1sZT    1  $ *K&