;ò K®ï@c@s"dZdkZdkZdkZdkZdklZlZlZdk Z dk l Z dk l Z lZdk lZdklZdklZdklZlZlZlZd klZd klZd klZlZlZlZl Z d k!l"Z"ye#Wne$j od Z#dZ%nXydk&l'Z'Wnd„Z'nXgZ(d„Z)dZ*ei+dhde*<ƒZ,ei+dhde*<ƒZ-e.ei/i0ddƒi1dƒƒZ2eƒZ3e3i4Z5eƒZ6e6i4Z7dfd„ƒYZ8ee8ƒdefd„ƒYZ9ee9ƒdS(s‘Placeless Translation Service for providing I18n to file-based code. $Id: PlacelessTranslationService.py,v 1.37 2004/07/10 08:52:27 tiran Exp $ N(sDictTypes StringTypes UnicodeType(sClassSecurityInfo(sviewsview_management_screens(sInitializeClass(sFolder(s HTTPRequest(sBrokenMessageCatalogsGettextMessageCatalogstranslationRegistrys getMessage(s negotiator(sDomain(slogsRegistrysINFOsBLATHERsPROBLEM(s PoSyntaxErrorii(sXMLcCst|ƒSdS(N(sstrsv(sv((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pysXML0scCs|i|ƒSdS(N(smapsgetsname(smapsname((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pysmap_get5ss[a-zA-Z][a-zA-Z0-9_]*s(?s/N(sjoinsselfs_path(sself((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys__repr__’s(s__name__s __module__s__doc__sClassSecurityInfossecuritys__init__sdeclarePrivatesloadsdeclareProtectedsviewsNones translates utranslates declarePublicsgetLanguageNames getLanguagessnegotiate_languages__repr__(((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys PTSWrapperOs          sPlacelessTranslationServicecBstZdZdZZdZddddfZfZeƒZ de d„Z d „Z d „Z d „Ze id ƒd „Ze e d„Zd„Zd„Zd„Ze iedƒe d„Zdd„Ze idƒd„Ze idƒd„Ze idƒe d„Ze idƒe d„Ze iedƒd„Ze iedƒe d „Ze ied!ƒe e e e d"„Z e ied#ƒe e e e e!d$„Z"e id%ƒd&„Z#e ied'ƒd(„Z$e id)ƒd*„Z%e ied+ƒd,„Z&RS(-s+ The Placeless Translation Service sPlaceless Translation ServicesAmisc_/PlacelessTranslationService/PlacelessTranslationService.pngiiÿÿÿÿiisglobalcCsE|i|_||_h}h}|tjo t }n||_ dS(N( sselfs_class_versions_instance_versionsdefault_domains_domainscatalogRegistrysfbcatalogRegistrys fallbackssNonesLANGUAGE_FALLBACKSs _fallbacks(sselfsdefault_domains fallbacksscatalogRegistrysfbcatalogRegistry((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys__init__«s    cCs˜t|tƒodSn|iƒ}ti|iƒ|fgƒi|i ƒƒx9|i ƒD]+}t i||fgƒi|i ƒƒq\Wd|_dS(Ni(s isinstancescatalogsBrokenMessageCatalogs getDomainsdomainscatalogRegistrys setdefaults getLanguagesappends getIdentifiersgetOtherLanguagesslangsfbcatalogRegistrysselfs _p_changed(sselfscatalogslangsdomain((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_registerMessageCatalog¹s + )cCsdx]|iƒD]O\}}y|i|iƒƒWntj o q nX| o ||=q q WdS(N(sclistsitemsskeyscombosremovescatalogs getIdentifiers ValueError(sselfscatalogsclistskeyscombo((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_unregister_innerÅs cCs-|i|tƒ|i|tƒd|_dS(Ni(sselfs_unregister_innerscatalogscatalogRegistrysfbcatalogRegistrys _p_changed(sselfscatalog((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_unregisterMessageCatalogÎss calculatePoIdc Csètiitdƒti}tiitdƒti}tiitdƒ} tiitdƒ}t } |i |ƒo|t|ƒ}n|i |ƒo|t|ƒ}nð|i | ƒo|t| ƒ}t} nÆ|i |ƒo|t|ƒ}t} nœ|itiƒ}y|idƒ} WnRtj oFy|idƒ} Wq~tj otd||fƒ‚q~XnXtii|| d|| ƒ}| o)|itiƒ}di|d ƒ}nd}d ||fSd S( sCalulate the po id sProductssi18nslocaless1Invalid po path %s for %s. That should not happenis.isGlobalCatalogss%s-%sN(sosspathsjoins INSTANCE_HOMEssepsiPaths SOFTWARE_HOMEssPaths gci18nNPaths gcLocPathsFalsesisGlobalCatalogspopaths startswithslensTruessplitspsindexsidxs ValueErrorsOSErrorsnamespre( sselfsnamespopathspressPathsps gcLocPathsiPathspathsisGlobalCatalogs gci18nNPathsidx((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys calculatePoIdÔs<   !c CsC|i||ƒ}y|i|dƒWn |}nXtii||ƒ}|i |t ƒ}y+t |tƒo|i|ƒt }nWnnXy>|t jo |it||||ƒƒn|i|ƒWnltj o"y|i|ƒWq?q?Xn@tiƒ}tdt||ƒ|it|||ƒƒnXdS(s2 create catalog instances in ZODB isMessage Catalog has errorsN(sselfs calculatePoIdsnamespopathsids_checkIdsosspathsjoinspofiles_getObs_markersobs isinstancesBrokenMessageCatalogs _delObjects addCatalogsGettextMessageCatalogslanguagesdomains reloadCatalogsIOErrorssyssexc_infosexcslogsPROBLEM( sselfsnamespopathslanguagesdomainsobspofilesidsexc((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_load_catalog_files6     cCsþtd|tƒtii|ƒ otdtƒdSntiti|ƒdƒ}|o'dk }|i d|t ddƒntiti|ƒdƒ}| otd tƒdSnx|D]}|i||ƒqÂWtd d t|ƒd |ƒdS( s¯ Loads an i18n directory (Zope3 PTS format) Format: Products/MyProduct/i18n/*.po The language and domain are stored in the po file s looking into sit does not existNs*.mos†Compiled po files (*.mo) found in %s. PlacelessTranslationService now compiles mo files automatically. All mo files have been ignored.s stacklevelis*.pos nothing founds Initialized:sdetails from %s (slogsbasepathsBLATHERsosspathsisdirsfnmatchsfilterslistdirs depr_namesswarningsswarnsDeprecationWarningsnamessnamesselfs_load_catalog_filesrepr(sselfsbasepaths depr_namesswarningssnamessname((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_load_i18n_dir)s"   c Cs\g}td|tƒtii|ƒ otdtƒdSnxÚti|ƒD]É}tii ||ƒ}tii|ƒ oqPntii |dƒ}tii|ƒ oqPnt i ti|ƒdƒ}xE|D]=}|d }|id||fƒ|i||||ƒqØWqPW| otdtƒdSntd d t|ƒd |ƒdS( s Loads an locales directory (Zope3 format) Format: Products/MyProduct/locales/${lang}/LC_MESSAGES/${domain}.po Where ${lang} and ${domain} are the language and the domain of the po file (e.g. locales/de/LC_MESSAGES/plone.po) s looking into sit does not existNs LC_MESSAGESs*.poiýÿÿÿs%s:%ss nothing founds Initialized:sdetails from %s (sfoundslogsbasepathsBLATHERsosspathsisdirslistdirslangsjoinslangpathsmsgpathsfnmatchsfiltersnamessnamesdomainsappendsselfs_load_catalog_filesrepr( sselfsbasepathslangsdomainslangpathsnamessmsgpathsfoundsname((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys_load_locales_dirEs0   cCsƒt|d|ƒ}t|tƒ oXtddtƒydkl}Wn'tj odk l }|ƒq{X|ƒ}n|SdS(NsREQUESTsUsing get_request patch.sseverity(s get_request(sapplyRequestPatch( sgetattrscontexts isinstances HTTPRequestslogsINFOsGlobalss get_requests ImportErrors PatchStringIOsapplyRequestPatch(sselfscontexts get_requestsapplyRequestPatch((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys _getContextgs   smanage_renameObjectcCsF|i|ƒ}|i|ƒti|||dtƒ|i |ƒdS(sD wrap manage_renameObject to deal with registration sREQUESTN( sselfs_getObsidscatalogs_unregisterMessageCatalogsFoldersmanage_renameObjectsnew_idsNones_registerMessageCatalog(sselfsidsnew_idsREQUESTscatalog((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pysmanage_renameObject{s  cCs3|i|ƒ}ti|||ƒ|i|ƒdS(N(sselfs_getObsidscatalogsFolders _delObjectsdps_unregisterMessageCatalog(sselfsidsdpscatalog((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys _delObject„ss reloadCatalogcCsM|i}|i|ƒ|i|ƒ|iƒ|i|ƒ}|i|ƒdS(N(scatalogsidsselfs_getObs_unregisterMessageCatalogsreloads_registerMessageCatalog(sselfscatalogsid((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys reloadCatalogŠs     s addCatalogcCsby|i|iƒWnnX|i|i|dtƒtd|i|ifƒ|i|ƒdS(Ns set_owners adding %s: %s( sselfs _delObjectscatalogsids _setObjectsFalseslogstitles_registerMessageCatalog(sselfscatalog((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pys addCatalog”ssgetCatalogsForTranslationcCsÑ|i|ƒ}d||pdf}|i|tƒ}|o-gi } |D]} | t | ƒqM~ Sn|tjo|i ||ƒ}nti||ffƒpti||ffƒ} t| ƒ} xc|iD]X} ti| |ffƒ}|o3x0|D]$}|| jo| i |ƒqqWqÖqÖWd}xYtt| ƒƒD]E} | | }|idƒo%| | =| i||ƒ|d7}qKqKW|i|| ƒgi } | D]} | t | ƒq²~ SdS(NsPTS_catalog_names_%s_%ssnoneisGlobalCatalogs-i(sselfs _getContextscontextsdomainstarget_languages cache_namesgetsNonescached_catalog_namessappends_[1]snamestranslationRegistrysnegotiate_languagescatalogRegistrysfbcatalogRegistrys catalog_namesslists _fallbacksslanguagesfallback_catalog_namessfallback_catalog_namespossrangeslensis catalog_names startswithsinsertsset(sselfscontextsdomainstarget_languagespossfallback_catalog_namesscached_catalog_namessfallback_catalog_names catalog_namesnameslanguagesis_[1]s catalog_namess cache_name((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pysgetCatalogsForTranslationžs6- 1    ssetLanguageFallbackscCs$|tjo t}n||_dS(N(s fallbackssNonesLANGUAGE_FALLBACKSsselfs _fallbacks(sselfs fallbacks((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pyssetLanguageFallbacksËs  sgetLanguageNamecCsmxftiƒD]X\\}}}||jo9x6|D]*}|i|ƒ}|i o |i Sq3q3Wq q WdS(N( scatalogRegistrysitemssccodescdomainscnamesscodescnamesselfs_getObscatsname(sselfscodesccodescnamesscatscdomainscname((sw/mnt/gmirror/ports/www/zope-placelesstranslationservice/work/PlacelessTranslationService/PlacelessTranslationService.pysgetLanguageNameÒs   s getLanguagescCs¦|tjoAtiƒ}h}x|D]}d||d