[Erp5-report] r29519 - /experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Oct 9 13:59:23 CEST 2009


Author: leonardo
Date: Fri Oct  9 13:59:22 2009
New Revision: 29519

URL: http://svn.erp5.org?rev=29519&view=rev
Log:
Sync with upstream

Modified:
    experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/.gitignore
    experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalContent.py
    experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalFiles.py
    experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/utils.py

Modified: experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/.gitignore
URL: http://svn.erp5.org/experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/.gitignore?rev=29519&r1=29518&r2=29519&view=diff
==============================================================================
--- experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/.gitignore [utf8] (original)
+++ experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/.gitignore [utf8] Fri Oct  9 13:59:22 2009
@@ -1,6 +1,4 @@
 *.pyc
 *.swp
-*~
-.svn
 locale/*.mo
 locale/*~

Modified: experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalContent.py
URL: http://svn.erp5.org/experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalContent.py?rev=29519&r1=29518&r2=29519&view=diff
==============================================================================
--- experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalContent.py [utf8] (original)
+++ experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalContent.py [utf8] Fri Oct  9 13:59:22 2009
@@ -215,12 +215,10 @@
 
 
     security.declareProtected('Manage messages', 'xliff_export')
-    def xliff_export(self, dst_lang, export_all=1, REQUEST=None, RESPONSE=None):
+    def xliff_export(self, dst_lang, export_all=1, REQUEST=None,
+                     RESPONSE=None):
         """ Exports the content of the message catalog to an XLIFF file
         """
-        # only export_all is actually optional, but we need to preserve the
-        # parameter order
-        assert REQUEST is not None and RESPONSE is not None
         from DateTime import DateTime
 
         src_lang = self._default_language

Modified: experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalFiles.py
URL: http://svn.erp5.org/experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalFiles.py?rev=29519&r1=29518&r2=29519&view=diff
==============================================================================
--- experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalFiles.py [utf8] (original)
+++ experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/LocalFiles.py [utf8] Fri Oct  9 13:59:22 2009
@@ -25,11 +25,6 @@
 
 # Import from the Standard Library
 import os
-import sys
-
-# Import from itools
-from itools import get_abspath
-from itools.gettext import register_domain
 
 # Import Zope modules
 from Globals import DTMLFile
@@ -38,16 +33,13 @@
 from utils import DomainAware
 
 
-class LocalDTMLFile(DTMLFile):
+
+class LocalDTMLFile(DomainAware, DTMLFile):
+    """ """
 
     def __init__(self, name, _prefix=None, **kw):
-        apply(LocalDTMLFile.inheritedAttribute('__init__'),
-              (self, name, _prefix), kw)
-
-        domain = get_abspath('locale',
-                             sys._getframe(1).f_globals.get('__name__'))
-        self.class_domain = domain
-        register_domain(domain, domain)
+        DTMLFile.__init__(self, name, _prefix, **kw)
+        DomainAware.__init__(self, _prefix)
 
 
     def _exec(self, bound_data, args, kw):
@@ -56,10 +48,6 @@
         bound_data['ugettext'] = self.gettext  # XXX backwards compatibility
         return apply(LocalDTMLFile.inheritedAttribute('_exec'),
                      (self, bound_data, args, kw))
-
-
-    def gettext(self, message, language=None):
-        return DomainAware.gettext(message, language, self.class_domain)
 
 
 
@@ -72,16 +60,12 @@
     class LocalPageTemplateFile:
         pass
 else:
-    class LocalPageTemplateFile(PageTemplateFile):
+    class LocalPageTemplateFile(DomainAware, PageTemplateFile):
+        """ """
 
         def __init__(self, name, _prefix=None, **kw):
-            apply(LocalPageTemplateFile.inheritedAttribute('__init__'),
-                  (self, name, _prefix), kw)
-
-            domain = get_abspath('locale',
-                                 sys._getframe(1).f_globals.get('__name__'))
-            self.class_domain = domain
-            register_domain(domain, domain)
+            PageTemplateFile.__init__(self, name, _prefix, **kw)
+            DomainAware.__init__(self, _prefix)
 
 
         def _exec(self, bound_data, args, kw):
@@ -91,6 +75,3 @@
             return apply(LocalPageTemplateFile.inheritedAttribute('_exec'),
                          (self, bound_data, args, kw))
 
-
-        def gettext(self, message, language=None):
-            return DomainAware.gettext(message, language, self.class_domain)

Modified: experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/utils.py
URL: http://svn.erp5.org/experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/utils.py?rev=29519&r1=29518&r2=29519&view=diff
==============================================================================
--- experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/utils.py [utf8] (original)
+++ experimental/erp5.buildout-zope-2.12/trunk/src/Products/Localizer/utils.py [utf8] Fri Oct  9 13:59:22 2009
@@ -16,8 +16,8 @@
 
 # Import from itools
 from itools import get_abspath
-from itools.i18n import AcceptLanguageType
-from itools.gettext import register_domain
+from itools.i18n import AcceptLanguageType, init_language_selector
+from itools.gettext import get_domain, register_domain
 
 # Import from Zope
 from Globals import package_home
@@ -36,10 +36,9 @@
 
 # Language negotiation
 def lang_negotiator(available_languages):
-    """
-    Receives two ordered lists, the list of user preferred languages
-    and the list of available languages. Returns the first user pref.
-    language that is available, if none is available returns None.
+    """Receives two ordered lists, the list of user preferred languages and
+    the list of available languages. Returns the first user pref.  language
+    that is available, if none is available returns None.
     """
     request = get_request()
     if request is None:
@@ -49,81 +48,32 @@
         accept = request['AcceptLanguage']
     except KeyError:
         return None
-    else:
-        lang = accept.select_language(available_languages)
-
-    # XXX Here we should set the Vary header, but, which value should it have??
-##    response = request.RESPONSE
-##    response.setHeader('Vary', 'accept-language')
-##    response.setHeader('Vary', '*')
-
-    return lang
-
-
-# Copy of DomainAware from itools-0.20.8 since it has been removed in 0.50.0
-class BaseDomainAware(object):
-
-    class_domain = None
-
-
-    @classmethod
-    def get_languages(cls):
-        return NotImplementedError
-
-
-    @classmethod
-    def select_language(cls, languages=None):
-        if languages is None:
-            languages = cls.get_languages()
-
-        accept = get_accept()
-        return accept.select_language(languages)
-
-
-    @classmethod
-    def gettext(cls, message, language=None, domain=None):
-        if domain is None:
-            domain = cls.class_domain
-
-        if domain not in domains:
-            return message
-
-        domain = domains[domain]
+
+    return accept.select_language(available_languages)
+
+
+init_language_selector(lang_negotiator)
+
+
+# Provide an API to access translations stored as MO files in the 'locale'
+# directory.
+class DomainAware(object):
+
+    def __init__(self, namespace):
+        mname = namespace['__name__']
+        domain = get_abspath('locale', mname=mname)
+        self.class_domain = domain
+        register_domain(domain, domain)
+
+
+    def gettext(self, message, language=None):
+        domain = get_domain(self.class_domain)
         if language is None:
             languages = domain.get_languages()
-            language = cls.select_language(languages)
-
-        if language is None:
-            return message
-
+            language = select_language(languages)
         return domain.gettext(message, language)
 
-# Provide an API to access translations stored as MO files in the 'locale'
-# directory. This code has been moved from Localizer.
-
-class DomainAware(BaseDomainAware):
-
-    def select_language(cls, languages):
-        request = get_request()
-        accept = request.get_header('accept-language', default='')
-        accept = AcceptLanguageType.decode(accept)
-        return accept.select_language(languages)
-
-    select_language = classmethod(select_language)
-
-
-class translation(DomainAware):
-
-    def __init__(self, namespace):
-        domain = get_abspath('locale')
-        self.class_domain = domain
-        register_domain(domain, domain)
-
-
-    def __call__(self, message, language=None):
-        return DomainAware.gettext(message, language, self.class_domain)
-
-_ = translation(globals())
+_ = DomainAware(globals()).gettext
 
 
 # Defines strings that must be internationalized




More information about the Erp5-report mailing list