m %UIc @sdZdkZdkZdkZdkZdkZdkZdklZddddddd d d d d dg Z ei i ei ddZ dZdZdZdfdYZdefdYZddddZhZdddeddZdeddZhahadaddZddZddZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&eZ'dS(&sInternationalization 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(sENOENTtNullTranslationstGNUTranslationstCatalogtfindt translationtinstallt textdomaintbindtextdomaintdgettextt dngettexttgettexttngettexttsharetlocalecCs|o|Sn|SdS(sy Implements the C expression: condition ? true : false Required to correctly interpret plural forms. N(t conditionttruetfalse(RRR((t$/data/zmath/lib/python2.4/gettext.pyttest=sc sdkl}dk} dk} | i||i}yNg}|D]6} | d| i jo| ddjo || qEqE~}Wn| i j ot dnX|o t dn|i dd }|i d d }tid id |}tidddg}x|D]}|djo|idq.|djoPt|djo t dni|i}|dcd|7} dd>}dd>} d}|id}|djo"||} || }|| O}nd} |id}|djo"||} || }|| O}nd} |id}|djo"||}|| }||O}nd}|}g}xt |dD]t}||@pb|} ||@o| |7} n|| @o| | 7} n|| @o| | 7} n|i| q&q&W|i|S( N(s normalizeiiit@Rt.t_(R t normalizetCOMPONENT_CODESETtCOMPONENT_TERRITORYtCOMPONENT_MODIFIERtmaskRtpostmodifiertcodesett territorytlanguagetrettrangetitvalR-treverse(R R6R>RBR?R8R:R;R@R7R9RCR=R<((Rt _expand_langsN                   cBstZddZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZedZRS(NcCsFh|_d|_d|_d|_|dj o|i|ndS(N(tselft_infotNonet_charsett_output_charsett _fallbacktfpt_parse(RFRL((Rt__init__s      cCsdS(N((RFRL((RRMscCs+|io|ii|n ||_dS(N(RFRKt add_fallbacktfallback(RFRP((RROs cCs"|io|ii|Sn|S(N(RFRKR tmessage(RFRQ((RR s cCs"|io|ii|Sn|S(N(RFRKtlgettextRQ(RFRQ((RRRs cCsA|io|ii|||Sn|djo|Sn|SdS(Ni(RFRKR tmsgid1tmsgid2R(RFRSRTR((RR s   cCsA|io|ii|||Sn|djo|Sn|SdS(Ni(RFRKt lngettextRSRTR(RFRSRTR((RRUs   cCs(|io|ii|Snt|S(N(RFRKtugettextRQtunicode(RFRQ((RRVs cCsM|io|ii|||Sn|djot|Sn t|SdS(Ni(RFRKt ungettextRSRTRRW(RFRSRTR((RRXs   cCs|iS(N(RFRG(RF((RtinfoscCs|iS(N(RFRI(RF((RtcharsetscCs|iS(N(RFRJ(RF((Rtoutput_charsetscCs ||_dS(N(RZRFRJ(RFRZ((Rtset_output_charsetscCs.dk}|o |ip|i|idss4Is>IIsBad magic numberisFile is corruptt:is s content-typescharset=s plural-formst;splural=tN(2tstructtunpacktgetattrRLtfilenameRFt_catalogtcatalogR treadtbufR.tbuflentmagictLE_MAGICtversiontmsgcountt masteridxttransidxtiitBE_MAGICtIOErrortxrangeRBtmlentmofftmendttlenttoffttendtmsgttmsgRHtlastktkt splitlinestitemtstriptsplittvtlowerRGRIR2RSRTRWR#RRA(RFRLRtRRwRRRiRSRkRTRsR}RuR R{RpRRmRRoRqRvRBRR#RR~RR|R((RRMsz     " "                  1   cCst}|ii||}||jo&|io|ii|Sn|Sn|i o|i |i Sn|i o|i |i Sn|S(N( tobjecttmissingRFRltgetRQRRKR RJtencodeRI(RFRQRR((RR Js     cCst}|ii||}||jo&|io|ii|Sn|Sn|i o|i |i Sn|i t i S(N( RRRFRlRRQRRKRRRJRR tgetpreferredencoding(RFRQRR((RRRXs    cCsy`|i||i|f}|io|i|iSn|io|i|iSn|SWnPt j oD|i o|i i |||Sn|djo|Sq|SnXdS(Ni( RFRlRSR RRRJRRItKeyErrorRKR RT(RFRSRTRR((RR cs    cCsyQ|i||i|f}|io|i|iSn|iti SWnPt j oD|i o|i i |||Sn|djo|Sq|SnXdS(Ni(RFRlRSR RRRJRR RRRKRURT(RFRSRTRR((RRUss   cCs[t}|ii||}||jo,|io|ii|Snt |Sn|S(N( RRRFRlRRQRRKRVRW(RFRQRR((RRVs   cCsy |i||i|f}Wn`tj oT|io|ii|||Sn|djot |}qt |}nX|S(Ni( RFRlRSR RRRRKRXRTRW(RFRSRTRR((RRXs   ( R_R`RrRxRMR RRR RURVRX(((RRs Q    ic Csf|djo t}n|djofg}x;dD]3}tii|}|o|i d}Pq1q1Wd|jo|i dqng}xC|D];}x2t |D]$} | |jo|i | qqWqW|o g} nd} xr|D]j}|djoPntii||dd|}tii|o |o| i |q^|SqqW| S( NtLANGUAGEtLC_ALLt LC_MESSAGEStLANGRetCs%s.mo(RRRR(t localedirRHt_default_localedirt languagestenvartostenvironRRCRR-tnelangstlangREtnelangtalltresulttpathtjointdomaintmofiletexists( RRRRRRCRRRRR((RRs@          c Cs|djo t}nt|||dd} | p(|o t Snt t d|nd} x| D]}tii|}ti|}|djo%ti||t|d}nti|}|o|i|n| djo |} qk| i|qkW| S(NRis$No translation file found for domaintrb(tclass_RHRRRRRtmofilesRPRRytENOENTRRRRtabspathtkeyt _translationsRttt setdefaulttopentcopyR=R\RO( RRRRRPR=RRRRR((RRs*    %  cCs,t||dtd|}|i|dS(NRPR=(RRRtTrueR=RRRW(RRRWR=R((RRstmessagescCs|dj o |antS(N(RRHt_current_domain(R((RRs  cCs+|dj o|t|