[Zope-Checkins] SVN: Zope/trunk/ Removed bridging code from Product.Five for PlacelessTranslationService and Localizer. Neither of the two is actually using this anymore.

Hanno Schlichting plone at hannosch.info
Sat Feb 21 10:18:01 EST 2009


Log message for revision 96948:
  Removed bridging code from Product.Five for PlacelessTranslationService and Localizer. Neither of the two is actually using this anymore.
  

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/Products/Five/TODO.txt
  D   Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.pt
  D   Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.py
  D   Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.txt
  D   Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.pt
  D   Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.py
  D   Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.txt
  U   Zope/trunk/src/Products/Five/doc/i18n.txt
  U   Zope/trunk/src/Products/Five/i18n.py

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/doc/CHANGES.rst	2009-02-21 15:18:00 UTC (rev 96948)
@@ -23,6 +23,9 @@
 Restructuring
 +++++++++++++
 
+- Removed bridging code from Product.Five for PlacelessTranslationService
+  and Localizer. Neither of the two is actually using this anymore.
+
 - Removed the specification of `SOFTWARE_HOME` and `ZOPE_HOME` from the
   standard instance scripts.
   [hannosch]

Modified: Zope/trunk/src/Products/Five/TODO.txt
===================================================================
--- Zope/trunk/src/Products/Five/TODO.txt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/TODO.txt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -5,8 +5,6 @@
 v1.2
 ----
 
-* backport r22057 from Five-1.3 branch: fix Localizer unit test problem
-
 * i18n and translation of utilities/browser/*pt
 
 * can we stop using zLOG and use the logging package? please?

Deleted: Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.pt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.pt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.pt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,7 +0,0 @@
-<html>
-<body>
-<!-- fivetest is a Zope 3 style i18n domain, default is a Localizer domain -->
-<p i18n:domain="fivetest" i18n:translate="">This is a message</p>
-<p i18n:domain="default" i18n:translate="">Object actions</p>
-</body>
-</html>

Deleted: Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.py	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.py	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,55 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2005 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Test the Localizer language integration for CPS.  This test
-requires a full blown CPS installation to run.  It is therefore
-prefixed with ``cps_`` so it won't be picked up by the test runner.
-
-$Id$
-"""
-
-def test_suite():
-    from Testing.ZopeTestCase import installProduct, FunctionalDocFileSuite
-    installProduct('Five')
-    installProduct('BTreeFolder2')
-    installProduct('CMFCalendar')
-    installProduct('CMFCore')
-    installProduct('CMFDefault')
-    installProduct('CMFTopic')
-    installProduct('DCWorkflow')
-    installProduct('Localizer')
-    installProduct('MailHost')
-    installProduct('CPSCore')
-    installProduct('CPSDefault')
-    installProduct('CPSDirectory')
-    installProduct('CPSUserFolder')
-    installProduct('TranslationService')
-    installProduct('SiteAccess')
-    # these products should (and used to be) be optional, but they
-    # aren't right now.
-    installProduct('CPSForum')
-    installProduct('CPSSubscriptions')
-    installProduct('CPSNewsLetters')
-    installProduct('CPSSchemas')
-    installProduct('CPSDocument')
-    installProduct('PortalTransforms')
-    installProduct('Epoz')
-    # optional products, but apparently still needed...
-    installProduct('CPSRSS')
-    installProduct('CPSChat')
-    installProduct('CPSCalendar')
-    installProduct('CPSCollector')
-    installProduct('CPSMailBoxer')
-
-    return FunctionalDocFileSuite('cps_test_localizer.txt',
-                                  package='Products.Five.browser.tests')

Deleted: Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.txt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/cps_test_localizer.txt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,113 +0,0 @@
-Localizer languages
-===================
-
-Before we start, we need to set up a manager user to be able to create
-the portal:
-
-  >>> uf = self.folder.acl_users
-  >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
-
-We need to 1) configure the Zope 3 i18n message catalogs, 2) make the
-CPS portal traversable, 3) register the Localizer languagees adapter
-and 4) register our test page:
-
-  >>> configure_zcml = """
-  ... <configure 
-  ...     xmlns="http://namespaces.zope.org/zope"
-  ...     xmlns:browser="http://namespaces.zope.org/browser"
-  ...     xmlns:five="http://namespaces.zope.org/five"
-  ...     xmlns:i18n="http://namespaces.zope.org/i18n"
-  ...     >
-  ...   <configure package="Products.Five.tests">
-  ...     <i18n:registerTranslations directory="locales" />
-  ...   </configure>
-  ... 
-  ...   <adapter
-  ...       for="zope.publisher.interfaces.http.IHTTPRequest"
-  ...       provides="zope.i18n.interfaces.IUserPreferredLanguages"
-  ...       factory="Products.Five.i18n.LocalizerLanguages"
-  ...       />
-  ... 
-  ...   <configure package="Products.Five.browser.tests">
-  ...     <browser:page
-  ...         for="*"
-  ...         template="cps_test_localizer.pt"
-  ...         name="cps_test_localizer.html"
-  ...         permission="zope2.View"
-  ...         />
-  ...   </configure>
-  ... </configure>
-  ... """
-  >>> from Products.Five import zcml
-  >>> zcml.load_string(configure_zcml)
-
-Create a CPS portal.  We print an additional line before creating it
-because PortalTransforms might print stuff to stdout and doctest
-doesn't allow us to ellide a first line.
-
-  >>> print "Ignore lines after me"; print http(r"""
-  ... POST /test_folder_1_/manage_addProduct/CPSDefault/manage_addCPSDefaultSite HTTP/1.1
-  ... Authorization: Basic manager:r00t
-  ... Content-Length: 269
-  ... Content-Type: application/x-www-form-urlencoded
-  ... 
-  ... id=cps&title=CPS+Portal&description=&manager_id=manager&manager_sn=CPS+manager&manager_givenName=Manager&manager_email=root%40localhost&manager_password=root&manager_password_confirmation=root&langs_list%3Alist=en&langs_list%3Alist=fr&langs_list%3Alist=de&submit=Create""")
-  Ignore lines after me
-  ...
-  HTTP/1.1 200 OK
-  ...
-
-Now for some actual testing... Our test page is a simple ZPT
-translating two messages from different domains.  The first domain is
-a Zope 3 style one, the second one comes from Localizer.
-
-Both systems should yield the same default language (English) when no
-language is specified whatsoever:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/cps/cps_test_localizer.html HTTP/1.1
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a Localizer domain -->
-  <p>This is a message</p>
-  <p>Object actions</p>
-  </body>
-  </html>
-
-Both systems should honour the HTTP ``Accept-Language`` header in the
-same way:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/cps/cps_test_localizer.html HTTP/1.1
-  ... Accept-Language: de
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a Localizer domain -->
-  <p>Dies ist eine Nachricht</p>
-  <p>Objekt Aktionen</p>
-  </body>
-  </html>
-
-Both systems should also honour Localizer-specific ways of determining
-the language, for example the ``LOCALIZER_LANGUAGE`` cookie:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/cps/cps_test_localizer.html HTTP/1.1
-  ... Accept-Language: de
-  ... Cookie: LOCALIZER_LANGUAGE=en
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a Localizer domain -->
-  <p>This is a message</p>
-  <p>Object actions</p>
-  </body>
-  </html>

Deleted: Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.pt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.pt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.pt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,7 +0,0 @@
-<html>
-<body>
-<!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-<p i18n:domain="fivetest" i18n:translate="">This is a message</p>
-<p i18n:domain="PlacelessTranslationService" i18n:translate="">Reload this catalog</p>
-</body>
-</html>

Deleted: Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.py	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.py	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,24 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2005 Zope Corporation and Contributors.
-# All Rights Reserved.
-#
-# This software is subject to the provisions of the Zope Public License,
-# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
-# FOR A PARTICULAR PURPOSE.
-#
-##############################################################################
-"""Test the PTS language integration.
-
-$Id$
-"""
-
-def test_suite():
-    from Testing.ZopeTestCase import installProduct, FunctionalDocFileSuite
-    installProduct('Five')
-    installProduct('PlacelessTranslationService')
-    return FunctionalDocFileSuite('pts_test_languages.txt',
-                                  package='Products.Five.browser.tests')

Deleted: Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.txt
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.txt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/browser/tests/pts_test_languages.txt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -1,134 +0,0 @@
-PTS languages
-=============
-
-Before we start, we need to set up a manager user to be able to create
-the portal:
-
-  >>> uf = self.folder.acl_users
-  >>> uf._doAddUser('manager', 'r00t', ['Manager'], [])
-
-We need to 1) configure the Zope 3 i18n message catalogs, 3) register
-the PTS languagees adapter and 3) register our test page:
-
-  >>> configure_zcml = """
-  ... <configure 
-  ...     xmlns="http://namespaces.zope.org/zope"
-  ...     xmlns:browser="http://namespaces.zope.org/browser"
-  ...     xmlns:i18n="http://namespaces.zope.org/i18n"
-  ...     >
-  ...   <configure package="Products.Five.tests">
-  ...     <i18n:registerTranslations directory="locales" />
-  ...   </configure>
-  ... 
-  ...   <adapter
-  ...       for="zope.publisher.interfaces.http.IHTTPRequest"
-  ...       provides="zope.i18n.interfaces.IUserPreferredLanguages"
-  ...       factory="Products.Five.i18n.PTSLanguages"
-  ...       />
-  ... 
-  ...   <configure package="Products.Five.browser.tests">
-  ...     <browser:page
-  ...         for="Products.Five.interfaces.IFolder"
-  ...         template="pts_test_languages.pt"
-  ...         name="pts_test_languages.html"
-  ...         permission="zope2.View"
-  ...         />
-  ...   </configure>
-  ... </configure>
-  ... """
-  >>> from Products.Five import zcml
-  >>> zcml.load_string(configure_zcml)
-
-Finally, we need a traversable folder so that the test page we
-registered is found:
-
-  >>> from Products.Five.tests.testing import manage_addFiveTraversableFolder
-  >>> manage_addFiveTraversableFolder(self.folder, 'ftf')
-
-Now for some actual testing... Our test page is a simple ZPT
-translating two messages from different domains.  The first domain is
-a Zope 3 style one, the second one comes from PTS.
-
-Both systems should yield the same default language (English) when no
-language is specified whatsoever:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/ftf/pts_test_languages.html HTTP/1.1
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-  <p>This is a message</p>
-  <p>Reload this catalog</p>
-  </body>
-  </html>
-
-Both systems should honour the HTTP ``Accept-Language`` header in the
-same way:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/ftf/pts_test_languages.html HTTP/1.1
-  ... Accept-Language: de
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-  <p>Dies ist eine Nachricht</p>
-  <p>Diesen Katalog neu einlesen</p>
-  </body>
-  </html>
-
-Both systems should also honour Localizer-specific ways of determining
-the language, for example the ``pts_language`` cookie...
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/ftf/pts_test_languages.html HTTP/1.1
-  ... Accept-Language: de
-  ... Cookie: pts_language=en
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-  <p>This is a message</p>
-  <p>Reload this catalog</p>
-  </body>
-  </html>
-
-... and the ``language`` form field...
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/ftf/pts_test_languages.html?language=en HTTP/1.1
-  ... Accept-Language: de
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-  <p>This is a message</p>
-  <p>Reload this catalog</p>
-  </body>
-  </html>
-
-... and both the ``pts_language`` cookie and the ``language`` form field:
-
-  >>> print http(r"""
-  ... GET /test_folder_1_/ftf/pts_test_languages.html?language=de HTTP/1.1
-  ... Accept-Language: en
-  ... Cookie: pts_language=fr
-  ... """)
-  HTTP/1.1 200 OK
-  ...
-  <html>
-  <body>
-  <!-- fivetest is a Zope 3 style i18n domain, default is a PTS domain -->
-  <p>Dies ist eine Nachricht</p>
-  <p>Diesen Katalog neu einlesen</p>
-  </body>
-  </html>

Modified: Zope/trunk/src/Products/Five/doc/i18n.txt
===================================================================
--- Zope/trunk/src/Products/Five/doc/i18n.txt	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/doc/i18n.txt	2009-02-21 15:18:00 UTC (rev 96948)
@@ -10,8 +10,7 @@
 domain has not been registered the Zope 3 way, Five's translation
 service will see that the utility lookup fails and use the next
 available fallback translation service.  In case of no other
-translation service installed, that is just a dummy fallback.  In case
-you have Localizer and PTS installed, it falls back to that.
+translation service installed, that is just a dummy fallback.
 
 To register Zope 3 style translation domains, use the following ZCML
 statement::
@@ -24,53 +23,3 @@
 locale directory layout`__.
 
 .. __: http://www.gnu.org/software/gettext/manual/html_chapter/gettext_10.html#SEC148
-
-
-Preferred languages and negotiation
------------------------------------
-
-Fallback translation services such as PTS and Localizer have their own
-way of determining the user-preferred languages and negotiating that
-with the available languages in the respective domain.  Zope 3
-translation domains typically adapt the request to
-IUserPreferredLanguages to get a list of preferred languages; then
-they use the INegotiator utility to negotiate between the preferred
-and available languages.
-
-The goal of the sprint was to allow both fallback translation services
-(PTS, Localizer) and Zope 3 translation domains come to the same
-conclusion regarding which language should be chosen.  The use case is
-that you have a site running Localizer or PTS and a bunch of "old"
-products using either one of those for translation.  Now you have an
-additional, "new" Five-based product using Zope 3 translation domains.
-Most of the time, a page contains user messages from more than one
-domain, so you would all domains be translated to the same language.
-
-
-Adjusting behaviour to your environment
----------------------------------------
-
-The default behaviour for choosing languages in Five is the one of
-Zope 3: analyze the Accept-Language HTTP header and nothing more.  In
-addition, Five providees ``IUserPreferredLanguages`` adapters for
-Localizer and PTS that choose languages the exact same way Localizer
-or PTS would.  So, if you're using Five in a Localizer-environment,
-you need this in your product's ``overrides.zcml``::
-
-    <adapter
-        for="zope.publisher.interfaces.http.IHTTPRequest"
-        provides="zope.i18n.interfaces.IUserPreferredLanguages"
-        factory="Products.Five.i18n.LocalizerLanguages"
-        />
-
-If you're using PTS::
-
-    <adapter
-        for="zope.publisher.interfaces.http.IHTTPRequest"
-        provides="zope.i18n.interfaces.IUserPreferredLanguages"
-        factory="Products.Five.i18n.PTSLanguages"
-        />
-
-That way Zope 3 translation domains will always come to the same
-conclusion regarding the language as your original translation service
-would.

Modified: Zope/trunk/src/Products/Five/i18n.py
===================================================================
--- Zope/trunk/src/Products/Five/i18n.py	2009-02-21 14:43:47 UTC (rev 96947)
+++ Zope/trunk/src/Products/Five/i18n.py	2009-02-21 15:18:00 UTC (rev 96948)
@@ -16,11 +16,8 @@
 $Id$
 """
 from Acquisition import aq_get
-from zope.interface import implements
 from zope.i18n.interfaces import IFallbackTranslationDomainFactory
 from zope.i18n.interfaces import ITranslationDomain
-from zope.i18n.interfaces import IUserPreferredLanguages
-from zope.i18n.negotiator import normalize_lang
 from zope.component import queryUtility
 from zope.i18nmessageid import Message
 from zope.publisher.interfaces.browser import IBrowserRequest
@@ -69,44 +66,5 @@
         return util.translate(msgid, mapping=mapping, context=context,
                               target_language=target_language, default=default)
 
-class LocalizerLanguages(object):
-    """Languages adapter that chooses languages according to Localizer
-    settings."""
-    implements(IUserPreferredLanguages)
-
-    def __init__(self, context):
-        self.context = context
-
-    def getPreferredLanguages(self):
-        if not hasattr(self.context, 'AcceptLanguage'):
-            return []
-            
-        accept_language = self.context.AcceptLanguage
-        langs = []
-        for lang, node in accept_language.children.items():
-            # Localizer may use xx_YY and xx-YY as language codes,
-            # while Zope expect xx-yy only, so we normalize the code here.
-            langs.append((node.get_quality(), normalize_lang(lang)))
-            langs.extend([(n.get_quality(), l) for l, n
-                          in node.children.items()])
-        langs.sort()
-        langs.reverse()
-        langs = [l for q, l in langs]
-        if '' in langs:
-            langs.remove('')
-        return langs
-
-class PTSLanguages(object):
-    """Languages adapter that chooses languages like
-    PlacelessTranslationService."""
-    implements(IUserPreferredLanguages)
-
-    def __init__(self, context):
-        self.context = context
-
-    def getPreferredLanguages(self):
-        from Products.PlacelessTranslationService.Negotiator import getLangPrefs
-        return getLangPrefs(self.context)
-
 # Hook that will be used by Products.PageTemplates.GlobalTranslationService
 _fallback_translation_service = None



More information about the Zope-Checkins mailing list