mς ‘γΈEc@s·dZdklZdklZdklZdklZdklZdk l Z dk l Z dk lZd fd „ƒYZd efd „ƒYZd efd„ƒYZdZdS(sYMimick Zope3 i18n machinery for Zope 2 $Id: i18n.py 71088 2006-11-06 14:46:59Z yuppie $ (s aq_acquire(s implements(s!IFallbackTranslationDomainFactory(sITranslationDomain(sIUserPreferredLanguages(snormalize_lang(s queryUtility(sMessagetFiveTranslationServicecBs#tZdZeeeed„ZRS(sCTranslation service that delegates to ``zope.i18n`` machinery. c CsMt|tƒo|i}|i}|i}n|djot|ƒ}n|oMtt |ƒ}|djo-tt ƒ}|dj o||ƒ}qœqΖn'tt ƒ}|dj o |ƒ}n|djo2t }|i||d|d|d|d|ƒSn|dj ot|ddƒ}n|i|d|d|d|d|ƒS(Ntmappingtcontextttarget_languagetdefaulttREQUEST(t isinstancetmsgidtMessagetdomainRRtNonetunicodet queryUtilitytITranslationDomaintutilt!IFallbackTranslationDomainFactoryt_fallback_translation_servicettst translateRRt aq_acquire( tselfR RRRRRRR((t1/data/zmath/zope/lib/python/Products/Five/i18n.pyR!s.            (t__name__t __module__t__doc__R R(((RRs tLocalizerLanguagescBs*tZdZeeƒd„Zd„ZRS(sMLanguages adapter that chooses languages according to Localizer settings.cCs ||_dS(N(RR(RR((Rt__init__Isc Cs t|idƒpgSn|ii}g}x|iiƒD]n\}}|i |i ƒt |ƒfƒ|i g}|iiƒD]\}}||i ƒ|fq‚~ƒq=W|iƒ|iƒg}|D]\}}||qΞ~}d|jo|idƒn|S(NtAcceptLanguaget(thasattrRRRtaccept_languagetlangstchildrentitemstlangtnodetappendt get_qualitytnormalize_langtextendt_[1]tltntsorttreversetqtremove( RR"R#R)R*R(R-RR((RtgetPreferredLanguagesLs  G  ' (RRRt implementstIUserPreferredLanguagesRR/(((RRDs   t PTSLanguagescBs*tZdZeeƒd„Zd„ZRS(sNLanguages adapter that chooses languages like PlacelessTranslationService.cCs ||_dS(N(RR(RR((RRdscCsdkl}||iƒS(N(s getLangPrefs(t/Products.PlacelessTranslationService.Negotiatort getLangPrefsRR(RR4((RR/gs (RRRR0R1RR/(((RR2_s   N(Rt AcquisitionRtzope.interfaceR0tzope.i18n.interfacesRR R1tzope.i18n.negotiatorR&tzope.componentR tzope.i18nmessageidRRtobjectRR2R R( R0R R1R RR2RR&RRRR((Rt?s        (