;ò ^QwBc@s³dZdklZdkZdZdZdZd„Zd„Zdfd „ƒYZ e d joOei ei i ei ieƒƒƒe d d gƒZeiƒid ƒGHndS(s,Return the Kupu .html file with i18n applied(s parseStringNiis#http://xml.zope.org/namespaces/i18ncCs2t|ƒtjo|Sntt|ƒdƒSdS(NsUTF-8(stypesisunicodesstr(si((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysustr scCsitiidƒoRgi}tididƒdidƒD]}||iƒƒq>~}|SndS(NsHTTP_ACCEPT_LANGUAGEs;is,( sossenvironshas_keysappends_[1]ssplitslsstripscharsets(s_[1]slscharsets((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys get_localesJs NationalizercOBs[tZdZddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOgOZdP„ZdQ„ZdR„ZdS„ZdT„ZdU„Z dV„Z dW„Z dX„Z dY„Z RS(Zs?Translates string in an HTML or XML file using i18n: directivessasabbrsacronymsaddresssappletsbsbdosbigsblinks blockquotesbuttonscaptionscenterscitescommentsdelsdfnsdirsdivsdlsdtsemsembedsfieldsetsfontsformsframesetsh1sh2sh3sh4sh5sh6sisiframesinsskbdslabelslegendslislistingsmapsmarqueesmenusmulticolsnobrsnoembedsnoframessnoscriptsobjectsolsoptgroupsoptionspspresqsssscriptsselectssmallsspansstrikesstrongsstylessubssupstablestbodystdstextareastfootsthstheadstitlestrsttsusulsxmpcCs||_||_dS(N(shtmlfilesselfslocale(sselfshtmlfileslocale((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys__init__.s cCs³|i|iƒ}|tj o1t|ƒ}z|i|ƒ}Wd|i ƒXnh}t|i ƒ}z|i ƒ}Wd|i ƒXt|ƒ}|i||ƒ|i|iƒSdS(sload and translate everythingN(sselfsget_po_file_pathslocalespopathsNonesopenspofps parse_po_filesmsgcatscloseshtmlfilesxmlfpsreadsxmls parseStringsdoms apply_i18ns serializesdocumentElement(sselfsxmlspofpsdomspopathsmsgcatsxmlfp((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys translate2s"    cCsâh}t}t}t}x£|iƒD]•}|iƒ}|i dƒp| oq%n|i dƒo3|o|o|||msgstrs#smsgidiiÿÿÿÿsmsgstriN( scatsNonesstatesmsgidsmsgstrspofps readlinesslinesstrips startswithsID(sselfspofpsmsgidsmsgstrscatsstatesline((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys parse_po_fileJs*    cCsu|iidƒ}x\|D]T}|itdƒo|i||ƒn|itdƒo|i ||ƒqqWdS(s%apply nationalization of the full doms*s translates attributesN( sdomsdocumentElementsgetElementsByTagNamesnodessnodeshasAttributeNSsI18NNSsselfsapply_translatesmsgcatsapply_attributes(sselfsdomsmsgcatsnodesnodes((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys apply_i18ncscCsg}|itdƒiƒ}}| onxE|iD]:}|i djo|i |i ƒq4t d|i ‚q4W|idi|ƒiƒƒ}}n|i|ƒo||}nx"|iƒo|i|iƒq¹W|itdƒ|i|ii|ƒƒdS(s handle Zope-style i18n:translates translateis,illegal element %s in i18n:translate elementuN(sbufsnodesgetAttributeNSsI18NNSsstripsmsgidsmsgstrs childNodesschildsnodeTypesappends nodeValues TypeErrorsnodeNamesselfsreduce_whitespacesjoinsmsgcatshas_keys hasChildNodess removeChilds firstChildsremoveAttributeNSs appendChilds ownerDocumentscreateTextNode(sselfsnodesmsgcatsmsgstrsmsgidschildsbuf((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysapply_translatels" & cCs‡|itdƒidƒ}xU|D]M}|i|ƒ}|o |i |ƒo!|i |t ||dƒƒq"q"W|i tdƒdS(s!handle Zope-style i18n:attributess attributess sUTF-8N( snodesgetAttributeNSsI18NNSssplits attrnamessattrs getAttributesvaluesmsgcatshas_keys setAttributesunicodesremoveAttributeNS(sselfsnodesmsgcatsattrsvalues attrnames((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysapply_attributes‚s%cCsdx)dddgD]}|i|dƒ}qWx-|idƒdjo|iddƒ}q/W|SdS(Ns s s s s iÿÿÿÿ(scharsstringsreplacesfind(sselfsstringschar((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysreduce_whitespace‹scCsºx³|D]«}d}|idƒ}d||df}g}t|ƒdjo|id||dfƒn|d|d |g7}x)|D]!}t ii |ƒo|SqqWqWdS( Ns../i18ns-s %s/kupu-%siis%s-%s.pois %s-default.pos%s.po( slocaleslanguagesstartdirssplits pathstartspathsslensappendspathsossisfile(sselfslocalespathsslanguages pathstartspathsstartdir((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysget_po_file_path’scCstg}|idjoö|id|iƒt|iƒoUxR|iiƒD]=\}}|t j o$|id||i |ƒfƒqJqJWn|i ƒp|i|ijoL|idƒx$|iD]}||i|ƒ7}qÆW|id|iƒq<|idƒn1|idjo|i|iƒn dGtiGHd igi}|D]}|t|ƒƒqP~ƒSdS( Nis<%ss %s="%s"s>ss />isignoring node of types(sbufselsnodeTypesappendsnodeNameslens attributessitemssattrsvaluesNonesselfsentitizes hasChildNodess not_singles childNodesschilds serializes nodeValuesnodesjoins_[1]sbsustr(sselfselsbsattrsvalues_[1]schildsbuf((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys serialize¢s&  ,    cCsP|iddƒ}|iddƒ}|iddƒ}|iddƒ}|SdS( Ns&s&ss>s"s"(sstringsreplace(sselfsstring((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pysentitize·s (s__name__s __module__s__doc__s not_singles__init__s translates parse_po_files apply_i18nsapply_translatesapply_attributessreduce_whitespacesget_po_file_paths serializesentitize(((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys Nationalizers ó       s__main__s../common/kupu.htmlsnlsUTF-8(s__doc__sxml.dom.minidoms parseStringsossIDsSTRsI18NNSsustrs get_locales Nationalizers__name__schdirspathsabspathsdirnames__file__sis translatesencode( s get_locales parseStringsustrsisSTRsI18NNSsossIDs Nationalizer((sA/mnt/gmirror/ports/www/zope-kupu/work/kupu/python/nationalizer.pys?s    ¥ %