ž ¬ÿfPc @spdZddlZddlZddlZddlZddlZddlZddlZddlm Z dddddd d d d d ddg Z ej j ej ddƒZejdejejBƒZdd„Zdd„ZdNZd$d%„eed&ƒDƒZid'd6d(d6d)d"6ZdOd*d+„Zd,d-„Zd.d/„Zd0d1„ZGd2d„dƒZGd3d„deƒZdddPd4d„Z iZ!ddddPdd5d„Z"dddd6d „Z#ia$ia%d7a&dd8d „Z'dd9d „Z(dd:d;„Z)d<d „Z*d=d>„Z+d?d „Z,d@dA„Z-dBd„Z.dCdD„Z/dEd„Z0dFdG„Z1e"Z2dS(Quª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. iN(uENOENTuNullTranslationsuGNUTranslationsuCatalogufindu translationuinstallu textdomainubindtextdomainudgettextu dngettextugettextungettextushareulocaleuÊ (?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]T}|j}|dkr4qn|j|ƒ}|dkrbtd|ƒ‚n|VqWdVdS(Nu WHITESPACESuINVALIDu invalid token in plural form: %su(ureufinditeru_token_patternu lastgroupugroupu ValueError(upluralumoukinduvalue((u,/opt/alt/python33/lib64/python3.3/gettext.pyu _tokenizeRs    u _tokenizecCs"|rtd|ƒStdƒSdS(Nu#unexpected token in plural form: %suunexpected end of plural form(u ValueError(uvalue((u,/opt/alt/python33/lib64/python3.3/gettext.pyu_error]su_erroru||u&&u==u!=uu<=u>=u+u-u*u/u%cCs,i|]"\}}|D]}||“qqS(((u.0uiuopsuop((u,/opt/alt/python33/lib64/python3.3/gettext.pyu ks u iuoruandu//c CsQd}t|ƒ}x&|dkr:|d7}t|ƒ}qW|dkr‡t|ƒ\}}d||f}|dkrítdƒ‚qínf|dkr¦d ||f}nGyt|d ƒ}Wn!tk rÜt|ƒd‚YnXd ||f}t|ƒ}d }x“|tkr”t|}||kr(Pn|dkrM|dkrMd|}ntj||ƒ}t||dƒ\} }d||| f}|}qW||ko¬dknr¾d|}n|dkrG|dkrGt|dƒ\} }|dkrt|ƒ‚nt|ƒ\} }d| || f}|dkrGd|}qGn||fS(Nuu!unot u(u%s(%s)u)u%unbalanced parenthesis in plural formunu%s%si u%s%didiiu(%s)iu%s %s %su?iu:u%s if %s else %s(ii(ii( unextu_parseu ValueErroruintu_erroruNoneu _binary_opsu _c2py_opsuget( utokensupriorityuresultunexttokusubuvalueujuiuopurightuif_trueuif_false((u,/opt/alt/python33/lib64/python3.3/gettext.pyu_parsensP              u_parsec CsEyt|ƒ}Wn.tk r@td|jjfƒd‚YnX|S(Nu'Plural value must be an integer, got %s(uroundu TypeErroru __class__u__name__uNone(unui((u,/opt/alt/python33/lib64/python3.3/gettext.pyu_as_intŸs  u_as_intc Cst|ƒdkr!tdƒ‚ny»tt|ƒƒ\}}|rQt|ƒ‚nd}x[|D]S}|dkr˜|d7}|dkr±tdƒ‚q±q^|dkr^|d8}q^q^Witd 6}td ||ƒ|d SWntk rütdƒ‚YnXd S( u‰Gets a C expression as used in PO files for plural forms and returns a Python function that implements an equivalent expression. ièu"plural form expression is too longiu(iiu%plural form expression is too complexu)u_as_intu›if True: def func(n): if not isinstance(n, int): n = _as_int(n) return int(%s) ufuncN(ulenu ValueErroru_parseu _tokenizeu_erroru_as_intuexecu RuntimeError(upluraluresultunexttokudepthucuns((u,/opt/alt/python33/lib64/python3.3/gettext.pyuc2py§s(        uc2pyc Cs¬tj|ƒ}d}d }d }d}|jdƒ}|dkro||d…}|d|…}||O}nd}|jdƒ}|dkr½||d…}|d|…}||O}nd}|jdƒ}|dkr ||d…}|d|…}||O}nd}|} g} x~t|dƒD]l} | |@s.| } | |@r\| |7} n| |@rs| |7} n| |@rŠ| |7} n| j| ƒq.q.W| jƒ| S( Niiiu@uu.u_iii(ulocaleu normalizeufindurangeuappendureverse( ulocuCOMPONENT_CODESETuCOMPONENT_TERRITORYuCOMPONENT_MODIFIERumaskuposumodifierucodesetu territoryulanguageuretuiuval((u,/opt/alt/python33/lib64/python3.3/gettext.pyu _expand_langËsJ           u _expand_langcBsª|EeZdZddd„Zdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zddd„ZdS(uNullTranslationscCsDi|_d|_d|_d|_|dk r@|j|ƒndS(N(u_infouNoneu_charsetu_output_charsetu _fallbacku_parse(uselfufp((u,/opt/alt/python33/lib64/python3.3/gettext.pyu__init__ös      uNullTranslations.__init__cCsdS(N((uselfufp((u,/opt/alt/python33/lib64/python3.3/gettext.pyu_parseþsuNullTranslations._parsecCs)|jr|jj|ƒn ||_dS(N(u _fallbacku add_fallback(uselfufallback((u,/opt/alt/python33/lib64/python3.3/gettext.pyu add_fallbacks uNullTranslations.add_fallbackcCs|jr|jj|ƒS|S(N(u _fallbackugettext(uselfumessage((u,/opt/alt/python33/lib64/python3.3/gettext.pyugettexts uNullTranslations.gettextcCs|jr|jj|ƒS|S(N(u _fallbackulgettext(uselfumessage((u,/opt/alt/python33/lib64/python3.3/gettext.pyulgettext s uNullTranslations.lgettextcCs7|jr|jj|||ƒS|dkr/|S|SdS(Ni(u _fallbackungettext(uselfumsgid1umsgid2un((u,/opt/alt/python33/lib64/python3.3/gettext.pyungettexts   uNullTranslations.ngettextcCs7|jr|jj|||ƒS|dkr/|S|SdS(Ni(u _fallbacku lngettext(uselfumsgid1umsgid2un((u,/opt/alt/python33/lib64/python3.3/gettext.pyu lngettexts   uNullTranslations.lngettextcCs|jS(N(u_info(uself((u,/opt/alt/python33/lib64/python3.3/gettext.pyuinfo!suNullTranslations.infocCs|jS(N(u_charset(uself((u,/opt/alt/python33/lib64/python3.3/gettext.pyucharset$suNullTranslations.charsetcCs|jS(N(u_output_charset(uself((u,/opt/alt/python33/lib64/python3.3/gettext.pyuoutput_charset'suNullTranslations.output_charsetcCs ||_dS(N(u_output_charset(uselfucharset((u,/opt/alt/python33/lib64/python3.3/gettext.pyuset_output_charset*su#NullTranslations.set_output_charsetcCs²ddl}|j|jdGsu(GNUTranslations._parse..u4Iu>IIuBad magic numberiuFile is corruptu uasciiu:iu content-typeucharset=u plural-formsu;uplural=s(ustructuunpackugetattru_catalogupluralureadulenuLE_MAGICuBE_MAGICuIOErrorurangeuNoneusplituencodeudecodeustripuloweru_infou_charsetuc2pyustru enumerate( uselfufpuunpackufilenameucatalogubufubuflenumagicuversionumsgcountu masteridxutransidxuiiuiumlenumoffumendutlenutoffutendumsgutmsgulastkukub_itemuitemuvupluralucharsetumsgid1umsgid2ux((u,/opt/alt/python33/lib64/python3.3/gettext.pyu_parse@sj    % % # #             uGNUTranslations._parsecCsstƒ}|jj||ƒ}||krG|jrC|jj|ƒS|S|jr`|j|jƒS|jtjƒƒS(N( uobjectu_catalogugetu _fallbackulgettextu_output_charsetuencodeulocaleugetpreferredencoding(uselfumessageumissingutmsg((u,/opt/alt/python33/lib64/python3.3/gettext.pyulgettexts    uGNUTranslations.lgettextc Cs˜yL|j||j|ƒf}|jr8|j|jƒS|jtjƒƒSWnEtk r“|jr{|jj|||ƒS|dkr‹|S|SYnXdS(Ni( u_catalogupluralu_output_charsetuencodeulocaleugetpreferredencodinguKeyErroru _fallbacku lngettext(uselfumsgid1umsgid2unutmsg((u,/opt/alt/python33/lib64/python3.3/gettext.pyu lngettext˜s    uGNUTranslations.lngettextcCsKtƒ}|jj||ƒ}||krG|jrC|jj|ƒS|S|S(N(uobjectu_catalogugetu _fallbackugettext(uselfumessageumissingutmsg((u,/opt/alt/python33/lib64/python3.3/gettext.pyugettext¦s   uGNUTranslations.gettextc Cssy |j||j|ƒf}WnLtk rn|jrO|jj|||ƒS|dkrd|}n|}YnX|S(Ni(u_catalogupluraluKeyErroru _fallbackungettext(uselfumsgid1umsgid2unutmsg((u,/opt/alt/python33/lib64/python3.3/gettext.pyungettext¯s      uGNUTranslations.ngettextN( u__name__u __module__u __qualname__uLE_MAGICuBE_MAGICu_parseulgettextu lngettextugettextungettext(u __locals__((u,/opt/alt/python33/lib64/python3.3/gettext.pyuGNUTranslations;s M  c CsT|dkrt}n|dkr‚g}x9dD]1}tjj|ƒ}|r.|jdƒ}Pq.q.Wd|kr‚|jdƒq‚ng}xA|D]9}x0t|ƒD]"}||kr¢|j|ƒq¢q¢WqW|rÛg} nd} xl|D]d}|dkrþPntjj ||dd|ƒ} tjj | ƒrè|rE| j| ƒqL| SqèqèW| S( NuLANGUAGEuLC_ALLu LC_MESSAGESuLANGu:uCu%s.mo(uLANGUAGEuLC_ALLu LC_MESSAGESuLANG( uNoneu_default_localediruosuenvironugetusplituappendu _expand_langupathujoinuexists( udomainu localediru languagesualluenvaruvalunelangsulangunelanguresultumofile((u,/opt/alt/python33/lib64/python3.3/gettext.pyufind½s8           c Cs|dkrt}nt|||ddƒ}|sU|r@tƒSttd|ƒ‚nd}x»|D]³}|tjj |ƒf} t j | ƒ} | dkrÎt |dƒ} t j | || ƒƒ} WdQXntj| ƒ} |ró| j|ƒn|dkr| }qb|j| ƒqbW|S(Nuallu$No translation file found for domainurbT(uNoneuGNUTranslationsufinduTrueuNullTranslationsuIOErroruENOENTuosupathuabspathu _translationsugetuopenu setdefaultucopyuset_output_charsetu add_fallback( udomainu localediru languagesuclass_ufallbackucodesetumofilesuresultumofileukeyutufp((u,/opt/alt/python33/lib64/python3.3/gettext.pyu translationås*    !  cCs,t||ddd|ƒ}|j|ƒdS(NufallbackucodesetT(u translationuTrueuinstall(udomainu localedirucodesetunamesut((u,/opt/alt/python33/lib64/python3.3/gettext.pyuinstallsumessagescCs|dk r|antS(N(uNoneu_current_domain(udomain((u,/opt/alt/python33/lib64/python3.3/gettext.pyu textdomains  cCs)|dk r|t|u<=u>=(u+u-(u*u/u%((u||(u&&(u==u!=(uu<=u>=(u+u-(u*u/u%iÿÿÿÿF(3u__doc__ulocaleucopyuiouosureustructusysuerrnouENOENTu__all__upathujoinu base_prefixu_default_localedirucompileuVERBOSEuDOTALLu_token_patternu _tokenizeu_erroru _binary_opsu enumerateu _c2py_opsu_parseu_as_intuc2pyu _expand_languNullTranslationsuGNUTranslationsuNoneuFalseufindu _translationsu translationuinstallu _localedirsu_localecodesetsu_current_domainu textdomainubindtextdomainubind_textdomain_codesetudgettextu ldgettextu dngettextu ldngettextugettextulgettextungettextu lngettextuCatalog(((u,/opt/alt/python33/lib64/python3.3/gettext.pyu sX&T    1  $ *F‚&