[Zope3-checkins] SVN: Zope3/branches/dominik-locatableadapters/ merge trunk into branch (from 29979 to 30223)

Dominik Huber dominik.huber at projekt01.ch
Mon May 2 03:44:20 EDT 2005


Log message for revision 30224:
  merge trunk into branch (from 29979 to 30223)

Changed:
  _U  Zope3/branches/dominik-locatableadapters/
  U   Zope3/branches/dominik-locatableadapters/doc/CHANGES.txt
  U   Zope3/branches/dominik-locatableadapters/doc/TODO.txt
  A   Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.tex
  D   Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.txt
  A   Zope3/branches/dominik-locatableadapters/package-includes/wfmc-configure.zcml
  A   Zope3/branches/dominik-locatableadapters/package-includes/zope.app.pluggableauth-configure.zcml
  U   Zope3/branches/dominik-locatableadapters/releases/ZopeX3/DEPENDENCIES.cfg
  U   Zope3/branches/dominik-locatableadapters/releases/ZopeX3/README.txt
  _U  Zope3/branches/dominik-locatableadapters/src/
  A   Zope3/branches/dominik-locatableadapters/src/buddydemo/I18N.txt
  U   Zope3/branches/dominik-locatableadapters/src/buddydemo/info.pt
  U   Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/buddydemo.pot
  A   Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/en/
  _U  Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/en/LC_MESSAGES/buddydemo.mo
  A   Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/ru/
  _U  Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/ru/LC_MESSAGES/buddydemo.mo
  U   Zope3/branches/dominik-locatableadapters/src/buddydemo/rename.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/I18N.txt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_add.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_edit.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_overview.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/dialog_macros.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/template.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker.py
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_add.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_overview.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_settings.pt
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/bugtracker.pot
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.mo
  U   Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/DEPENDENCIES.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/PACKAGE.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/DEPENDENCIES.cfg
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/apidoc-meta.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/bookmodule/book.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/codemodule/README.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/presentation.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/ftests/test_translationdomaincontrol.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.py
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/SETUP.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.py
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/groupfolder.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/httpplugins.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/session.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/tests.py
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/zope.app.authentication-configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/README.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/component/browser/registration.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/component/interface.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/demo/widget/help/textareawidget.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/dublincore/creatorannotator.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/tests/test_checkboxwidget.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget_macros.pt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/interfaces.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/form/tests/test_widget.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/generations/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/homefolder/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/methodnotallowed.py
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/tests/test_methodnotallowed.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/keyreference/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/de/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/es/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/extract.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/fr/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/it/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/pt_BR/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.mo
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.po
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locales/zope.pot
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/locking/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/module/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/pagelet/README.txt
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/SETUP.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/browser/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/zope.app.pluggableauth-configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/preference/SETUP.cfg
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-meta.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/tests.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/publication/ftests.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/publication/http.py
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/publication/methodnotallowed.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/publication/zopepublication.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/securitypolicy/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/session/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/testing/functional.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/testing/test.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/tree/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/versioncontrol/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/wfmc/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zope/app/winservice/
  _U  Zope3/branches/dominik-locatableadapters/src/zope/app/winservice/__init__.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/app/winservice/service.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/app/zapi/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zope/component/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/component/site.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/component/tests.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/configuration/xmlconfig.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18n/DEPENDENCIES.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18n/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18n/i18nobject.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18n/locales/tests/test_xmlfactory.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18n/messageid.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messageid.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messages.txt
  A   Zope3/branches/dominik-locatableadapters/src/zope/interface/README.ru.txt
  U   Zope3/branches/dominik-locatableadapters/src/zope/interface/tests/test_interface.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/publisher/base.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/publisher/interfaces/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/basetestipublicationrequest.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/test_baserequest.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/publisher/xmlrpc.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/security/DEPENDENCIES.cfg
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/dummyengine.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/htmltalparser.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/taldefs.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/talgenerator.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/talinterpreter.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/markbench.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/run.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_sourcepos.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talgettext.py
  U   Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talinterpreter.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talparser.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_xmlparser.py
  _U  Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/utils.py
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/CHANGES.txt
  A   Zope3/branches/dominik-locatableadapters/src/zwiki/I18N.txt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/VERSION.txt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/__init__.py
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/add.pt
  A   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/browser.txt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/configure.zcml
  A   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/ftests.py
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/parents_page.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/dialog_macros.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/template.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/subscriptions.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/view_page.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_add.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_search.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_toc.pt
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wikipage.py
  _U  Zope3/branches/dominik-locatableadapters/src/zwiki/comment.py
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/configure.zcml
  U   Zope3/branches/dominik-locatableadapters/src/zwiki/interfaces.py
  A   Zope3/branches/dominik-locatableadapters/src/zwiki/locales/
  _U  Zope3/branches/dominik-locatableadapters/src/zwiki/locales/en/LC_MESSAGES/zwiki.mo
  _U  Zope3/branches/dominik-locatableadapters/src/zwiki/locales/ru/LC_MESSAGES/zwiki.mo
  _U  Zope3/branches/dominik-locatableadapters/src/zwiki/tests/test_docstrings.py
  D   Zope3/branches/dominik-locatableadapters/utilities/unittestgui.py
  A   Zope3/branches/dominik-locatableadapters/zeo.conf
  U   Zope3/branches/dominik-locatableadapters/zope.conf.in
  U   Zope3/branches/dominik-locatableadapters/zopeskel/etc/ftesting.zcml
  A   Zope3/branches/dominik-locatableadapters/zopeskel/etc/securitypolicy-ftesting.zcml

-=-

Property changes on: Zope3/branches/dominik-locatableadapters
___________________________________________________________________
Name: svn:ignore
   - overrides_ftesting.zcml
products_ftesting.zcml
principals.zcml
products.zcml
overrides.zcml
zope.conf
Data.fs
Data.fs.*
build
dist
coverage
z3.log
access.log
test-db
zdsock
setup.bat
start.bat
test.bat

   + overrides_ftesting.zcml
products_ftesting.zcml
principals.zcml
products.zcml
overrides.zcml
zope.conf
Data.fs
Data.fs.*
build
dist
coverage
z3.log
access.log
zeo.log
test-db
zdsock
setup.bat
start.bat
test.bat


Modified: Zope3/branches/dominik-locatableadapters/doc/CHANGES.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/doc/CHANGES.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/doc/CHANGES.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -10,6 +10,17 @@
 
     New features
 
+      - The http() function exposed to functional doctests how accepts
+        an optional "form" argument to use as the set of form values.
+        This works for any type of request; this can used to make
+        functional doctests involving form submissions much easier to
+        read and maintain.  It's also convenient when some of the form
+        values are computed.
+
+      - Implemented proper HTTP 405 Method Not Allowed handling in the
+        HTTP publication if a requested method does not have a corresponding
+        view.
+
       - Implemented a generic user preferences system.
 
         * User preferences are combined in groups that are described by
@@ -29,7 +40,7 @@
           namespace::
 
             /++preferences++/zmi/folder/sortedby
-     
+
         * Preferences are easily accessible in Python code::
 
            >>> prefs = IUserPreferences(context)
@@ -71,29 +82,35 @@
         Added a layer argument to the menu directives and made sure that all
         browser directives specify the layer for the menu directives.
 
-      - Implemented issue 292: Add factory to browser:resource directive
+      - Implemented issue 292: Add factory to ``browser:resource`` directive
 
-      - Implemented issue 309: <schemadisplay> should support <widget>
+      - Implemented issue 309: ``<schemadisplay>`` should support ``<widget>``
 
-      - Developed a generic browser:form directive. It is pretty much the same
-        as the browser:editform directive, except that the data is not stored
-        on some context or adapted context but sent as a dictionary to special
-        method (by default). By default these methods are named `getData()` and
-        `setData(data)`.
+      - Developed a generic ``browser:form`` directive. It is pretty much the
+        same as the ``browser:editform`` directive, except that the data is
+        not stored on some context or adapted context but sent as a dictionary
+        to special method (by default). By default these methods are named
+        ``getData()`` and ``setData(data)``.
 
       - When raising the Unauthorized exception, the security checker
         now passes the object in question in addition to the attribute
-        name and missing permission.  This should make debugging easier.
+        name and missing permission. This should make debugging easier.
 
       - You can declare "features" provided by your package with the new
-        <meta:provides feature="name" /> ZCML directive.  The presence of these
-        features can be tested with the new zcml:condition attribute.
+        ``<meta:provides feature="name" />`` ZCML directive. The presence of
+        these features can be tested with the new ``zcml:condition``
+        attribute.
 
       - ZCML supports conditional directives using the zcml:condition
-        attribute.  The value of the attribute is an expression of the
-        form "verb arguments".  Currently the only recognized verb is "have",
-        and it takes a single name of a feature as an argument.
+        attribute. The value of the attribute is an expression of the
+        form "verb arguments". The following verbs are recognized:
 
+        * `have` -- It takes a single name of a feature as an
+          argument.
+
+        * `installed` -- It's argument is a single package name. If the
+          package is importable, return true.
+
         If the expression is true, the element the attribute is attached to
         will be used, otherwise the element and its descendents will be
         ignored.
@@ -105,9 +122,9 @@
         * A new `bookmodule` compiles all our README.txt and other text
           documentation files to a nice book-like format.
 
-        * A new `typemodule` lists all interface types (such as
-          `IContentType`) and then let's you see all interfaces providing this
-          type (for example `IFile`)
+        * A new ``typemodule`` lists all interface types (such as
+          ``IContentType``) and then let's you see all interfaces providing
+          this type (for example ``IFile``)
 
         * Views are now shown in the Interface details screen.
 
@@ -121,16 +138,16 @@
           want to see by default in the interface details screen.
 
       - Zope 3 can now listen on specified network interfaces only.  Example
-        of a server section in zope.conf:
+        of a server section in `zope.conf`::
 
             <server>
               type HTTP
               address 127.0.0.1:8080
             </server>
 
-      - Improvements to zope.i18n.format.
+      - Improvements to ``zope.i18n.format``.
 
-        * Support for parsing and formatting timezones based on pytz.
+        * Support for parsing and formatting timezones based on ``pytz``.
 
         * Reinterpretation of of ICU documentation, revealed that any number
           of formatting fields should be accepted by the formatter and parser.
@@ -138,8 +155,8 @@
         * Implemented formatting of several missing formatting fields. Now all
           fields are correctly implemented.
 
-      - Added pytz to the repository. Stuart Bishop licensed it for us under
-        ZPL 2.1. Thanks!
+      - Added ``pytz`` to the repository. Stuart Bishop licensed it for us
+        under ZPL 2.1. Thanks!
 
       - New schema field: Timedelta.
 
@@ -165,13 +182,13 @@
 
       - It is no longer necessary to supply a for attribute in adapter
         directives if the factory declares the interfaces or classes that it
-        adapts using zope.component.adapts.
+        adapts using ``zope.component.adapts``.
 
       - It is no longer necessary to specify a provides attribute in
         an adapter or utility directive if the factory/component
         implements/provides a single interface.
 
-      - Added `zope.security.canAccess` and `zope.security.canWrite`
+      - Added ``zope.security.canAccess`` and ``zope.security.canWrite``
         convenience methods.  Often code wants to check if a certain option is
         open to a user before presenting it.  If the code relies on a certain
         permission, the Zope 3 goal of keeping knowledge of security
@@ -182,8 +199,8 @@
 
       - Added lazy properties. (See zope/cachedescriptors/README.txt)
 
-      - Added new `getNextUtility()`, `queryNextUtility()`, and
-        `testingNextUtility()` functions to make it easier to find and test
+      - Added new ``getNextUtility()``, ``queryNextUtility()``, and
+        ``testingNextUtility()`` functions to make it easier to find and test
         for utilities in higher-up sites. These mimic their service-based
         equivalents.
 
@@ -306,11 +323,12 @@
       - Schemas are now copied before they are appended to content type or
         instance. This should probably become a policy later.
 
-      - Implemented ICacheable view's current_cache_url() method, so that a
-        link to the cache utility can be provided.
+      - Implemented ``ICacheable`` view's ``current_cache_url()`` method, so
+        that a link to the cache utility can be provided.
 
-      - Added ++debug++ traversal adapter that allows you to turn on debugging
-        flags in request.debug.  Currently the following flags are defined:
+      - Added '++debug++' traversal adapter that allows you to turn on
+        debugging flags in request.debug.  Currently the following flags are
+        defined:
 
         + "source" adds HTML comments to rendered page templates showing
            where each code snippet came from.
@@ -323,17 +341,18 @@
         Try e.g. http://localhost:8080/++debug++source,tal/@@contents.html
         and view the source of the resulting page.
 
-      - Added 'url' adapter for IPathAdapter. It provides quoting mechanisms
-        to strings (and string-like objects) from within ZPT, e.g:
+      - Added 'url' adapter for ``IPathAdapter``. It provides quoting
+        mechanisms to strings (and string-like objects) from within ZPT, e.g::
 
         tal:attributes="href string:login.html?nextURL=${request/URL/url:quote}
 
-        Other functions available are quote_plus, unquote, unquote_plus.
+        Other functions available are ``quote_plus``, ``unquote``,
+        ``unquote_plus``.
 
       - Added basic cataloging functionality.
 
-      - Added functions (zope.app.container.constraints.contains and
-        zope.app.container.constraints.containers) that greatly simplify
+      - Added functions (``zope.app.container.constraints.contains`` and
+        ``zope.app.container.constraints.containers``) that greatly simplify
         expressing containment constraints.
 
       - Added a view 'failsafelogin.html' that always uses HTTP basic auth
@@ -343,11 +362,16 @@
 
           http://yoursite.com/@@failsafelogin.html
 
+      - Added a re-implementation of i18n message IDs (now simply
+        called ``Message``) that is immutable and thus can be treated
+        like unicode strings with respect to security proxying.  This
+        implementation will replace the old one in upcoming versions.
+
     Restructuring
 
       - Applied changes suggested in issue 339: Improvements to generated forms
 
-      - Deprecated `zope.app.introspector`. You should use the public apidoc
+      - Deprecated ``zope.app.introspector``. You should use the public apidoc
         utilities isntead. A new "Introspector" tab was implemented that
         redirects you to the correct code browser documentation screen.
 
@@ -358,16 +382,17 @@
 
       - Addressed issue 295: Sort out defaultView.
 
-        Deprecated `zope:defaultView` directive and removed unused default
-        view handler in `zope.app.publisher.browser.viewmeta`. Added a `layer`
-        attribute to the `browser:defaultView` directive.
+        Deprecated ``zope:defaultView`` directive and removed unused default
+        view handler in ``zope.app.publisher.browser.viewmeta``. Added a
+        ``layer`` attribute to the `browser:defaultView` directive.
 
-      - zope.component.createObject no longer accepts a positional
+      - ``zope.component.createObject`` no longer accepts a positional
         context argument.  A context can be provided as a keyword argument.
 
-      - Deprecated _configureCopy in zope.app.copypastemove.ObjectCopier. To
-        configure a recently copied object, suscribe to IObjectCopiedEvent for
-        the type of object you're interested in configuring.
+      - Deprecated ``_configureCopy`` in
+        ``zope.app.copypastemove.ObjectCopier``. To configure a recently
+        copied object, suscribe to IObjectCopiedEvent for the type of object
+        you're interested in configuring.
 
       - Several changes have been made to the API doc tool:
 
@@ -383,21 +408,21 @@
 
         + Converted most tests to text files.
 
-        + Moved code from `__init__.py` files to modules.
+        + Moved code from ``__init__.py`` files to modules.
 
-        + Removed `viewmodule`, since its functionality has been merged into
+        + Removed ``viewmodule``, since its functionality has been merged into
           the interface details view.
 
       - Changed the test-counting mechanism for doctests.  Now a
         doctest count a test for every example that is preceeded by
         prose. (Although a doctest will never count less than 1 test.)
 
-      - Moved reusable test setups/APIs from `zope.app.tests` to
-        `zope.app.testing`. No reusable testing code should be in a `tests`
+      - Moved reusable test setups/APIs from ``zope.app.tests`` to
+        ``zope.app.testing``. No reusable testing code should be in a ``tests``
         package or module.
 
       - Removal of Services. You can now access the adapter and utiliy
-        registry directly via the site manager's `adapters` and `utilities`
+        registry directly via the site manager's ``adapters`` and ``utilities``
         attribute, respecitvely.
 
         + Converted Error Reporting Service to a utility. Added database
@@ -566,6 +591,15 @@
 
     Bug Fixes
 
+      - The interface directive supports multiple interface types now.
+
+      - Fixed issue #314: i18n:translate removes line breaks
+        from <pre>...</pre> contents
+
+      - The getAdapters function on site managers returned None when
+        adapter factories returned None. These values should not be
+        included in the output and now aren't.
+
       - Fixed issue #394: starting zope with command -C arg
         causes request.form to contain '-C':''
 
@@ -705,7 +739,7 @@
       Jim Fulton, Fred Drake, Philipp von Weitershausen, Stephan Richter,
       Gustavo Niemeyer, Daniel Nouri, Volker Bachschneider, Roger Ineichen,
       Shane Hathaway, Bjorn Tillenius, Garrett Smith, Marius Gedminas, Stuart
-      Bishop, Dominik Huber, Dmitry Vasiliev
+      Bishop, Dominik Huber, Dmitry Vasiliev, Gary Poster
 
       Note: If you are not listed and contributed, please add yourself. This
       note will be deleted before the release.
@@ -1799,5 +1833,3 @@
       - FTP support (not sure if this works)
 
       - XML-RPC support  (not sure if this works)
-
-

Modified: Zope3/branches/dominik-locatableadapters/doc/TODO.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/doc/TODO.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/doc/TODO.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -49,8 +49,6 @@
 
   * 301: Bug with i18n:name and i18n:translate on the same element 
 
-  * 314: i18n:translate removes line breaks from <pre>...</pre> contents
-
 Others
 ~~~~~~
 
@@ -97,3 +95,6 @@
 
   * 334: Failing RuntimeInfo tests
          Fixed: on trunk at rev 29616, on ZopeX3-3.0 branch at rev 29906
+
+  * 314: i18n:translate removes line breaks from <pre>...</pre> contents
+         Fixed: on trunk at rev 30152, on ZopeX3-3.0 branch at rev 30153

Copied: Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.tex (from rev 30223, Zope3/trunk/doc/security/SecurityTarget.tex)


Property changes on: Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.tex
___________________________________________________________________
Name: svn:keywords
   + LastChangedDate LastChangedRevision Id

Deleted: Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/doc/security/SecurityTarget.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,1471 +0,0 @@
-===============================================================================
- Zope X3 Security Target for EAL 1 ($Rev$ - Draft)
-===============================================================================
-
-:Version: $Rev$ (Draft)
-:Date: $Date$
-:Authors: Christian Theune <ct at gocept.com>, Steve Alexander <steve at catbox.net>, Jim Fulton <jim at zope.com>
-:DocumentID: $Id$
-
-.. contents::
-
-Document History
-================
-
-    ========  ========  ==================  ================
-    Version   Date      Change              Editor
-    ========  ========  ==================  ================
-    0.1                 First draft         Christian Theune
-    ========  ========  ==================  ================
-
-ST introduction
-===============
-
-ST identification
------------------
-
-:Document Title: Zope X3, Security target
-
-:Document ID: $Id$
-
-:Document Version: $Rev$
-
-:Origin: Zope Corporation public CVS server
-
-:TOE Reference: Zope X3 TOE.0 (??? Need a name, issue, naming of X3 family)
-
-:TOE Commercial Name: Zope X3
-
-:TOE Short Description: A platform independent web application server and framework written in Python
-
-:Product Type: Web Application Server
-
-:Evaluation Body: Evaluation Body of TUV Informationstechnik GmbH, Germany
-
-:Certification Body: Certification Body of TUV Informationstechnik GmbH, Germany
-
-This ST is based upon Common Criteria, Version 2.1 (*[CC]*).
-The TOE consists of the following component:
-
-    ===========     ==========  ================
-    Component       Version     Supplier
-    ===========     ==========  ================
-    Zope            X3          Zope Corporation
-    ===========     ==========  ================
-
-ST overview
------------
-
-The main objectives of this Security Target are:
-
-    *   To describe the Target of Evaluation (TOE).
-
-    *   To describe the security environment of the TOE including the assets to
-        be protected and the threats to be countered by the TOE and its
-        environment.
-
-    *   To describe the security objectives of the TOE and its supporting
-        environment.
-    
-    *   To specify the Security Requirements, which include the TOE security
-        functional requirements as of CC, part 2 and the assurance requirements as
-        of CC, part 3.
-    
-    *   To set up the TOE summary specification, which includes the TOE
-        security functions specifications and the assurance measures.
-
-ISO/IEC 15408 (CC) Conformance
-------------------------------
-
-This ST is claimed to be conformant with the ISO/IEC 15408:1999 (Common
-Criteria, Version 2.1 with final interpretations, see *[CC]*) and its following
-parts:
-
-    *   Part 2 and
-    
-    *   Part 3, EAL1.
-    
-The assurance level is EAL 1.
-
-TOE description
-===============
-
-Overview
---------
-
-Zope 3 (also referred to as "Zope") is a component based framework that may be
-used to build web applications. It's development is historically focused but
-not limited on building content management systems.
-
-It is written as platform independent software using the Python programming
-language. Therefore it is available for Windows NT, Linux, MacOS X and other
-operating systems.
-
-Zope 3 features a set of core components that form an infrastructure for 
-building applications by reusing existing components and adding new components
-that work together by defined interfaces.
-
-The core functionality contains a web server with WebDAV support, a ftp server
-and a XML/RPC server.  It has components that provide functionality for
-security management including administration of users, roles and permissions.
-Other core components cover an object database, indexing mechanisms,
-workflow, a web interface, SQL support an XML-based and a non-XML based templating
-mechanism, Python Scripting, I18n and L10n support and many more.
-
-Finally Zope can be extended by the use of packages that
-can contain configuration directives, templates, python code
-and classes. Those are intended to work together seamlessly using the
-ComponentArchitecture to plug them together into more complex systems.
-
-TOE definition
---------------
-
-As a general rule it is possible to describe all activities with and within Zope as
-"operations" performed on "objects". The need for security adds a protecting
-subject to this by guarding operations with "permissions".
-
-Users of the system are internally identified with "principals" which act on
-their behalf.  Those principals are granted permissions (both statically via
-configuration files and dynamically via settings in the object database) within
-an context to allow them performing operations on a selected set of objects.
-
-Principals are authenticated in various way depending on the means of
-connection to a server.  Authentication usually envolves a username-password
-pair such as for FTP-Authentication and HTTP-Basic-Authentication.  Other
-authentication mechanisms are possible.
-
-  XXX Rewrite this section in terms of the 4-part arch.
-
-TOE Development and Production
-------------------------------
-
-The development of Zope 3 is driven by the Zope Corporation together with the
-free community of Zope developers. The Zope 3 source code is free to be
-retrieved and used by everybody.
-
-The official Zope 3 source code is maintained within a centralized
-source-code control system.  Everybody is free to retrieve any
-available version of the code anonymously. The certified version is
-available on a named branch and identified by a tag.
-
-To ensure a stable production every developer wishing to directly access the
-repository must retrieve authorisation from Zope Corporation. This is
-expressed by providing a signed contributors agreement,
-http://dev.zope.org/DevHome/Subversion/Contributor.pdf.
-
-Write access to the repository is only available through ssh and by providing a
-public key to the maintainer of the repository.
-
-All changes to source code and other files in the repository are reported
-publically to interested persons including those persons that are responsible
-for overseeing the quality and direction of parts of Zope.
-
-Any change to a file in the repository causes that file to have a new version
-number and the exact change is recorded. Before writing a change back to the
-repository on a branch that is declared for public use or for main development
-(release branches, HEAD, main development branches) the developer must
-successfully run the prepared unit tests to assure that no code breaks when
-applying his changes. Additionally every developer is required to provide unit
-test for new code he writes or problems he solves, as far as applicable.
-
-TOE Life Cycle
---------------
-
-The TOE is developed in cycles. New features are introduced in iterative steps
-called "feature release" and solutions to known problems are introduced by
-steps called "bugfix releases".
-
-The version numbers of the TOE releases express if it is a feature or bugfix
-release like this: 3.f.b where f and b are continuous given numbers and f
-expresses the f-th feature relase for Zope 3 and b expresses the b-th bugfix
-relase for the f-th feature release. Every feature relase starts with bugfix
-release 0 in which case the bugfix number may be ommitted. (E.g. 3.1.4,
-3.1.0/3.1, 3.0.0/3.0)
-
-Test releases are identified by adding their grade (a for alpha, b for beta, rc
-for release candidate) at the end of the version number that it is targeted at.
-(3.1.4b2 would be the second beta release for the upcoming version 3.1.4)
-
-New features are proposed and agreed within the developers community by the use
-of mailinglists and wiki pages. They are incorportated in an agreed feature
-release.
-
-Until agreed to be ready for public test the development and until all features
-are available (but maybe untested), development of a feature release happens
-on the CVS HEAD branch. When starting public releases, no further features are
-allowed to be introduced and the development enters maintanence mode. Therefore
-a named branch is created to identify changes that are applied for maintenance.
-New features will be introduced on the HEAD branch that is heading for the next
-feature release.
-
-Therefore an overall of about 3 concurrent maintained versions can exist:
-
-        * old feature release in maintenance mode
-        
-        * upcoming feature release, already in maintance mode but not stable
-        
-        * upcoming feature relaese in free development mode
-
-TOE Boundaries
---------------
-
-Physical Boundaries
-^^^^^^^^^^^^^^^^^^^
-
-Files included in a Zope software distribution.
-
-TOE Logical Boundaries
-^^^^^^^^^^^^^^^^^^^^^^
-
-The logical boundary for the TOE consists of the four security
-sub-systems of Zope:
-
-- permission declaration
-
-- protection
-
-- authentication
-
-- authorization
-
-TOE security environment
-========================
-
-Assets
-------
-
-The following primary assets have been identified:
-
-    =================   ====================================================
-    Asset Name          Description
-    =================   ====================================================
-    (Content) Objects   Generic objects (instances of Python classes) that 
-                        are stored and controlled by Zope and carry 
-                        information that is to be protected. Objects are 
-                        stored in a connected manner that is typically 
-                        hierarchical and allows the derivation of 
-                        information by the objects context.
-    =================   ====================================================
-
-The following secondary assets have been identified:
-                        
-
-    =================   ====================================================
-    Asset Name          Description
-    =================   ====================================================
-    Host System         The unit of computer hardware and software that 
-                        forms the environment of Zope to run on. (E.g.
-                        a PC server with Windows 2000 or Linux installed)
-
-    Operations          Operations are the way of accessing and modifying 
-                        data provided by (content) objects.
-
-    Principals          Principals are the systems representation of acting 
-                        individuals. A principal acts in behalf of the user 
-                        and represents a (content) object of it's own.
-
-    Permission          A permission is a name guarding an operation.
-
-    Permission grants   A permission grant associates a principal with a
-                        permission to allow or deny an operation in the context.
-                        As a third state, permissions may be declared to
-                        be acquired from the context. 
-
-    Audit data          The data generated by the TOE audit subsystem.
-
-    Transaction data    All operations within Zope are held within ACID
-                        compatible transactions that are bound to each
-                        request from the outside and associated with a 
-                        principal.
-    =================   ====================================================
-
-Subject
--------
-
-Zope has a concept of interactions, which model the interaction of one
-or more users with the system.  An interaction keeps track of the
-users that are participating in the interaction as "participations".
-In the TOE, interactions will have single users participating through
-server request (for example, Web requests).  Interactions are referred
-to as "subjects" in the TOE.
-
-Operations
-----------
-
-Operations are performed on objects. They are defined in an objects class. A
-class is defined in the Python programming language and is identified by a
-fully qualified name.
-
-A operation is a name defined in a class. It may take a form of an attribute, a
-method or some other related python thing.
-
-There are two possible kinds of access to an operation: Reading such as reading
-an attribute or calling a method. Writing such as setting or deleting an
-attribute. Reading is guarded with a different permission than writing.  
-
-Assumptions (about the environment)
------------------------------------
-
-The following assumptions need to be made about the TOE environment:
-
-    ===============     ==================================================
-    Assumption Name     Description
-    ===============     ==================================================
-    A.OS                The machine and the operating system Zope is 
-                        running on is physically secure. 
-    A.Admin             The "system-administrator" of the above 
-                        mentioned machine is trustworthy.
-    A.Network           A network connection to the Zope services is 
-                        present. All The other network connection are 
-                        secure in such a way that the integrity of 
-                        the machine and operating system is preserved.
-    A.Client            The connection between client and Zope server is 
-                        secure in a sense the the identification and 
-                        authentication data is not monitored or interfered.
-    A.Credential        The user is keeping the credential to authenticate 
-                        secret.
-    A.Integrity         The system is administrated such that the system is 
-                        free from malicious software like viruses and 
-                        Trojan horses.
-    ===============     ==================================================
-
-
-Threats
--------
-
-The following threat agents have been identified:
-
-    *   Users having correct authentication credentials who might try to
-        acquire more permission grants to get access to operations they
-        should not.
-        
-    *   Users without correct authentication credentials for a certain
-        principal trying to authenticate as this.
-
-The following threats against the assets have been identified:
-
-    ==============     ==================================================  =======================================================================
-    Threat             Threat description                                  Asset
-    ==============     ==================================================  =======================================================================
-    T.IA               An attacker might impersonate an authorized         Principal
-                       principal without providing the necessary 
-                       credentials.
-    T.Perm             A principal changes the permission grants           Permission grants,
-                       without having the right to do so.                  
-    T.Operation        A principal performs an operation on an object      Operation, Object
-                       without having the correct permission.
-    T.AuditFake        An attacker might convince the audit data           Audit data
-                       generation functions to log false information 
-                       (date, time, type of event, outcome, user)
-    T.Import           An attacker might try to make the system            Secondary assets
-                       interpret imported security attributes in a
-                       not intended way to acquire a higher level of 
-                       access to the system.
-    T.RIP              An attacker might try to make the system use        Secondary assets
-                       residual information for deciding to allow
-                       or deny access to an operation to gain more
-                       access than intended.
-    T.Transaction      An attacker might try to perform commit or          XXX was given by TUV. not sure if this really applies ...
-                       abort operations on foreign transactions to         All assets in ZODB
-                       perform operations on the behalf of other
-                       users.
-    T.Undo             An attacker might try to perform an Undo            All assets in ZODB
-                       operation to invalid revisions.
-    T.USB              An attacker might try to use executable code        XXX does this only apply to TTW code which we dropped anyway?
-                       which runs on behalf of another user to perform
-                       unauthorized operations and maybe hide his
-                       traces.
-    T.Timestamps       An attacker might try to hide his actions           Audit data
-                       by making the system create false timestamps
-                       which would result in wrong association to a
-                       user on dynamic IP address ranges.
-    T.TrustedPath      An attacker might try to use "user data import"     XXX didn't we drop import/export at all?
-                       or "user data export" without being a local 
-                       user and using the trusted path.
-    T.Host             An attacker might use Python functions that         Host, Object
-                       result in direct access to the host environment
-                       therefore compromising the host and Zope itself.
-    ==============     ==================================================  =======================================================================
-
-Organisational security policies
---------------------------------
-
-OSPs are to be defined by the developer who creates applications using Zope and
-the customer running those applications.  Zope as a general purpose application
-server does neither require nor impose any OSPs.
-
-Security objectives
-===================
-
-Security objectives for the TOE
--------------------------------
-
-The following security objectives have been defined for the TOE:
-
-    ==============  =======================================================================
-    Objective Name  Description
-    ==============  =======================================================================
-    O.IA            All principals must be accurately identified and
-                    authenticated with the exception of the "unauthenticated"
-                    principal.
-
-    O.Delegation    Provide the ability to securely delegate control. Users can
-                    delegate the ability to control access to selected
-                    operations to others. To delegate a permission, a meta permission
-                    that allows you to delegate this permission must be granted.
-    
-    O.Audit         The TOE will provide the means of recording any 
-                    security relevant events, so as to assist an 
-                    administrator in the detection of potential attacks 
-                    or misconfiguration of the TOE security features 
-                    that would leave the TOE susceptible to attack, and 
-                    also to hold users accountable for any actions 
-                    they perform that are relevant to security.
-
-    O.Protect       The TOE will protect itself against external
-                    interference or tampering by untrusted subjects or
-                    attempts by untrusted subjects to bypass the TOE
-                    security functions. See Guide B.4
-
-    O.Access        The TOE ensures that access to objects is
-                    mediated by operations and guarded by permissions.
-
-    O.Integrity     Whenever an unhandled error within the context of a
-                    running transaction occurs (related or unrelated
-                    to security) the transaction will be rolled back
-                    and the system will be in the state before the
-                    transaction started.
-
-    O.Attributes    Whenever attributes are set using identifiers
-                    (e.g. principal, or permission identifiers), the
-                    identifiers must be defined.
- 
-    O.ManageRisk    Provide the ability to manage risk by trading off
-                    functionality against risk. For example, we can
-                    make it easier to access the system to perform 
-                    operations whose potential negative impact is
-                    low, but make it more difficult to access the
-                    system in a way that allows operations with high
-                    negative impact.
-    ==============  =======================================================================
-
-Security objectives for the environment
----------------------------------------
-
-The following security objectives have been defined for the TOE environment:
-
-
-    ===============     =======================================================
-    Assumption Name     Description
-    ===============     =======================================================
-    OE.OS               The machine and the operating system Zope is running 
-                        on is physically secure.
-    OE.Trust            Those responsible for the TOE must be trustworthy.
-    OE.Manage           Those responsible for the TOE must ensure that the TOE 
-                        is delivered, installed, managed, and operated in a 
-                        manner which maintains IT security.
-    OE.AUDITLOG         Administrators of the TOE must ensure that audit 
-                        facilities are used and managed effectively. In 
-                        particular: 
-                        
-                        a) Appropriate action must be taken to ensure continued 
-                           audit logging, e.g. by regular archiving of logs 
-                           before audit trail exhaustion to ensure sufficient 
-                           free space. 
-                        b) Audit logs should be inspected on a regular basis, 
-                           and appropriate action should be taken on the 
-                           detection of breaches of security, or events that 
-                           are likely to lead to a breach in the future.
-
-    OE.Network          A network connection to the Zope services is present. 
-                        All other network connections are secure in such a 
-                        way that the integrity of the machine and operating 
-                        system is preserved.
-    OE.Client           The connection between client and Zope server is secure 
-                        in a sense that the identification and authentication 
-                        data is not monitored or interfered.
-    OE.Credential       The user is keeping the credential to authenticate 
-                        secret.
-    ===============     =======================================================
-
-
-Security requirements
-=====================
-
-TOE security requirements
--------------------------
-
-TOE security functional requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following functional requirements identify the TOE functional requirements.
-They have been drawn from the CC Part 2 functional requirements components.
-
-Class FAU: Audit data generation
-********************************
-
-FAU_GEN.1 Audit data generation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FAU_GEN.1.1
-    The TSF shall be able to generate an audit record of the following auditable
-    events:
-
-    a)  Start-up and shutdown of audit functions;
-
-    b)  All auditable events for the *[minimum]* level of audit; and
-
-    c)  *[select: other events XXX]* 
-
-FAU_GEN.1.2
-
-    The TSF shall record within each audit record at least the
-    following information:
-
-    a) Date and time of the event, type of event, subject identity,
-        and the outcome (success or failure) of the event; and
-
-    b) For each audit event type, based on auditable event definitions
-        of the the the functional components included in the ST,
-        *[assignment: the ID of the corresponding interaction, other audit relevant information XXX]*
-    
-FAU_GEN.2 User identity assocation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FAU_GEN.2.1
-    The TSF shall be able to associate each auditable event with the identity
-    of the user that caused the event.
-    
-Class FDP: Data protection
-***************************
-
-FDP_ACC.2 Complete access control
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FDP_ACC.2.1 
-    The TSF shall enforce the *[formal security policy]* on
-    *[subjects: interactions and objects: content objects]* and all
-    operations among subjects and objects covered by the SFP.
-
-    XXX
-       We now protect adapters of various kinds. This implies that
-       adapters are assets, but we think that they should not be.
-
-FDP_ACC.2.2
-    The TSF shall ensure that all operations between any
-    subject in the TSC and any object within the TSC are covered by an
-    access control SFP.
-
-FDP_ACF.1 Security attribute based access control
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FDP_ACF.1.1
-    The TSF shall enforce the *[formal security policy]* to objects
-    based on *[the interaction principal, the permission required for
-    the operation and the grants or denials of the permission for that
-    object or it's ancestor objects]*.
-
-FDP_ACF.1.2
-    The TSF shall enforce the following rules to determine
-    if an operation among controlled subjects and controlled objects is
-    allowed: *[
-    
-     - Access is denied if there is a denial for the subject's
-      principal for the required permission on the object. 
-
-    - Access is allowed if there is a grant and there is not a denial
-      for the subject's principal for the required permission on the object.
-
-    - Access is denied if access would be denied for the subject's
-      principal for the required permission on the parent of the
-      object.
-
-    - Access is allowed if access would be allowed and would not be
-      denied for the subject's principal for the required permission
-      on the parent of the object.
-
-    where the required permission is the permission required to
-    perform the desired operation on the object.
-
-    ]*
-
-FDP_ACF.1.3
-    The TSF shall explicitly authorise access of subjects to
-    objects based on the following additional rules: *[none]*
-
-FDP_ACF.1.4
-    The TSF shall explicitly deny access of subjects to objects
-    based on the following additional rules: *[none]*
-
-FDP_ETC.2 Export of user data with security attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Note
-        The TOE may, initially, satisfy the requirements in this
-        function by not supporting data export, or, by only
-        supporting export from outside the TSC (outside the
-        software interfaces).
-
-FDP_ETC.2.1
-    The TSF shall enforce the *[formal security policy]* when exporting user
-    data, controlled under the SFP, outside the TSC.
-
-FDP_ETC.2.2
-    The TSF shall export the user data with the user data's associated 
-    security attributes.
-
-FDP_ETC.2.3
-    The TSF shall ensure that the security attributes, when 
-    exported outside the TSC, are unambiguously associated 
-    with the exported user data.
-
-FDP_ETC.2.4
-    The TSF shall enforce the following rules when user data 
-    is exported from the TSC: *[none]*.
-    
-FDP_ITC.1 Import of user data without security attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Note
-        The TOE may, initially, satisfy the requirements in this
-        function by not supporting data import, or, by only
-        supporting import from outside the TSC (outside the
-        software interfaces).
-
-FDP_ITC.1.1
-    The TSF shall enforce the *[formal security policy]* when importing user 
-    data, controlled under the SFP, from outside of the TSC.
-
-FDP_ITC.1.2
-    The TSF shall ignore any security attributes associated with the user data 
-    when imported from outside the TSC.
-    
-FDP_ITC.1.3
-    The TSF shall enforce the following rules when importing user data 
-    controlled under the SFP from outside the TSC: 
-    *[
-
-      No security attributes will be set when importing. The imported
-      user data will have no security attributes.  
-
-      Note
-         Access to the imported data will be governed by the grants in
-         the location the data are imported into, as described in
-         FDP_ACF.1.2.
-
-      ]*.
-
-FDP_ITC.2 Import of user data with security attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Note
-        The TOE may, initially, satisfy the requirements in this
-        function by not supporting data import, or, by only
-        supporting import from outside the TSC (outside the
-        software interfaces).
-
-FDP_ITC.2.1
-    The TSF shall enforce the *[formal security policy]* when importing user 
-    data, controlled under the SFP, from outside of the TSC. 
-    
-FDP_ITC.2.2 
-    The TSF shall use the security attributes associated with the imported 
-    user data. 
-    
-FDP_ITC.2.3
-    The TSF shall ensure that the protocol used provides for the unambiguous 
-    association between the security attributes and the user data received. 
-    
-FDP_ITC.2.4
-    The TSF shall ensure that interpretation of the security attributes of 
-    the imported user data is as intended by the source of the user data. 
-
-FDP_ITC.2.5
-    The TSF shall enforce the following rules when importing user data 
-    controlled under the SFP from outside the TSC:
-    *[
-
-      If any imported data has security attributes that refer to
-      permissions or principals not defined in the target system, the
-      entire import will fail and an explanatory error will be provided.
-
-    ]*.
-    
-FDP_RIP.1 Subset residual information protection
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FDP_RIP.2.1
-    The TSF shall ensure that any previous information content of a
-    resource is made unavailable upon the *[selection: deallocation of
-    the resource from]* all objects.
-
-XXX 
-   need to think through the implications of undo for rip -- Steve's
-   "Bob" example.
-
-FDP_ROL.2_TRANSACTIONS Advanced Rollback
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FDP_ROL.2.1 
-    The TSF shall permit *[the rollback of all
-    operations on all objects]*.
-
-FDP_ROL.2.2 
-    The TSF shall permit operations to be rolled
-    back *[at any time before the transaction in which the operation was
-    performed is committed]*.
-
-    Note 
-        This statement may not apply to cached data created
-        during the course of a transaction.
-
-FDP_ROL.1_UNDO Basic rollback 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FDP_ROL.1.1 
-    The TSF shall enforce the *[formal security policy]* to permit
-    the rollback of the *[operations that caused changes]* on the *[content
-    objects]*.
-
-FDP_ROL.1.2 
-    The TSF shall permit operations to be rolled back
-    within the *[period of time for which the old revisions of the objects
-    exist]*.
-
-Class FIA: Identification and authentication
-********************************************
-
-
-FIA_AFL_z.1 Authentication failure handling
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FIA_AFL_z.1.1
-
-    The TSF shall detect when there are configurable number of consecutive
-    unsuccessful authentication attempts for a single login name,
-    with no intermediate successful attempts.
-
-FIA_AFL_z.1.2 
-
-    When the defined number of unsuccessful authentication attempts
-    has been surpassed, the TSF shall *[assignment: 
-
-      - Disable authentication against the indicated login name for a
-        configurable period of time.
-
-    ]*.
-
-
-FIA_ATD.1 User attribute definition
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FIA_ATD.1.1 
-    The TSF shall maintain the following list of security attributes
-    belonging to individual principals *[uniqueid, credentials, grants
-    and denials]*
-
-FIA_UAU.1 Timing of authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FIA_UAU.1.1 
-    The TSF shall allow *[only those operations granted to the
-    unauthenticated principal]* on behalf of the user before the user is
-    authenticated.
-
-    *[Note: It is possible to deny all operations to the anonymous
-    principal. This means that a user must login before any operations may
-    be performed on their behalf. This fullfills the terms of FIA_UAU.2]*
-
-FIA_UAU.1.2 
-    The TSF shall require each *[user]* to be successfully
-    authenticated before allowing any other TSF-mediated actions on behalf
-    of that user.
-
-FIA_UAU.5 Multiple authentication systems
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FIA_UAU.5.1 
-    The TSF shall provide *[extensible support for multiple
-    authentication mechanisms. The default mechanism uses login names
-    and passwords in combination with HTTP Basic Authorization and FTP
-    authorization]*
-
-FIA_UAU.5.2
-    The TSF shall authenticate any users claimed identity according to
-    the *[system configuration, provided credentials, such as a
-    username/password pair and the protocol used]*
-    
-FIA_UAU.6 Re-authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FIA_UAU.6.1 
-    The TSF shall re-authenticate the user under the conditions
-    *[
-    
-      - If the credentials held by the user agent have expired due to
-        a configurable time limit.
-
-    ]*.
-
-FIA_USB.1 User-subject binding
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-FIA_USB.1.1
-    The TSF shall associate the appropriate user security
-    attributes with subjects acting on behalf of that user.
-
-
-Class FMT: Security management
-******************************
-
-FMT_MOF.1 Management of security functions 
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FMT_MOF.1.1
-    The TSF shall restrict the ability to *[selection: determine the
-    behaviour of, disable, enable, modify the behaviour of]* the
-    functions *[assignment: authentication]* to *[assignment: 
-    authorised administrators]*.
-
-    Note 
-        This includes adding and removing principals (for example,
-        users). 
-
-FMT_MSA.1 Management of security attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FMT_MSA.1.1.grants
-
-    The TSF shall enforce the *[formal security policy]* to restrict
-    the ability to *[selection: query, modify, delete,
-    and add]]* the security attributes *[permission grants and denials]* to
-    *[authorized grantors]*.
-
-FMT_MSA.1.1.loginname
-
-    The TSF shall enforce the *[formal security policy]* to restrict
-    the ability to *[selection: query and modify, ]* the security
-    attributes *[login name]* to *[authorized administrators, users
-    authorized to modify their own authentication data]*.
-
-FMT_MSA.1.1.password
-
-    The TSF shall enforce the *[formal security policy]* to restrict
-    the ability to *[selection: modify]* the security attributes
-    *[password]* to *[authorized administrators, users authorized to
-    modify their own authentication data]*.
-
- XXX
-      In later versions of the TOE we will need to specify semantics
-      of self registration (and authenticated users who are strangers,
-      and thus "untrusted")
-
-FMT_MSA.3 Static attribute initialisation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FMT_MSA.3.1
-    The TSF shall enforce the *[formal security policy]* to provide 
-    *[restrictive]* default values for security attributes that are used to 
-    enforce the SFP.
-
-    Note
-        Security attributes are expressed as collections of grants or
-        denials. The default is an empty collection.
-
-FMT_MSA.3.2 
-    The TSF shall allow the *[no one]* to specify alternative
-    initial values to override the default values when an object or
-    information is created.
-
-
-XXX
-        What objective goes with this?
-
-        A hint that we don't need this actually is the fact that we won't have
-        any data to send for auditing ...
-
-FMT_SMR.1 Security roles
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-FMT_SMR.1.1
-    The TSF shall maintain *[
-
-    Authorized administrator
-       Users who can perform system-wide security functions. These are
-       people who have the zope.ManageSecurity permission.       
-
-    Grantor 
-       Users who have the ability to grant or deny permissions to
-       users for objects.  These are users who have any of the grant
-       meta-permissions.
-
-    Users authorized to modify their own authentication data
-       The role name says it all.
-
-    ]*.
-
-FMT_SMR.1.2
-    The TSF shall be able to associate *[principals]* with roles.
-
-
-Class FPT: Protection of the TSF
-********************************
-
-FPT_AMT.1 Abstract machine testing
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FPT_AMT.1.1 
-    
-    The TSF shall run a suite of tests *[selection: as an offline
-    operation]* to demonstrate the correct operation of the security
-    assumptions provided by the abstract machine that underlies the
-    TSF.
-
-FPT_FLS.1 Failure with preservation of secure state
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FPT_FLS.1.1 
-
-  The TSF shall preserve a secure state when the following types of
-  failures occur: [assignment: process termination, resource
-  exhaustion, host restart].
-
-FPT_RVM.1 Non-bypassability of the TSP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FPT_RVM.1.1 
-    The TSF shall ensure that TSP enforcement functions are invoked
-    and succeed before each function within the TSC is allowed to
-    proceed.
-
-FPT_SEP.1 TSF domain separation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FPT_SEP.1.1 
-    The TSF shall maintain a security domain for its own execution that
-    protects it from interference and tampering by untrusted
-    subjects. FPT_SEP.1.2 The TSF shall enforce separation between the
-    security domains of subjects in the TSC.
-
-FPT_STM.1 Reliable time stamps
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-FPT_STM.1.1
-    The TSF shall be able to provide reliable time stamps for its own use.
-
-
-TOE security assurance requirements
------------------------------------
-
-The Evaluation Assurance Level chosen for this Evaluation is EAL 1.
-
-The following TOE assurance requirements drawn from CC Part 3 are valid:
-
-    ==============  ======================================  ===================
-    Identification  Description                             Direct dependencies
-    ==============  ======================================  ===================
-    **ACM**         Configuration management (CM)   
-        ACM_CAP.1   Version numbers                         None
-    **ADO**         Delivery and Operation          
-        ADO_IGS.1   Installation, generation and start-up   AGD_ADM.1
-    **ADV**         Development
-        ADV_FSP.1   Informal Functional specification       ADV_RCR.1
-        ADV_RCR.1   Representation correspondence:          None
-                    Information correspondence 
-                    demonstration         
-    **AGD**         Guidance documents
-        AGD_ADM.1   Administrator guidance                  ADV_FSP.1
-        AGD_USR.1   User guidance                           ADV_FSP.1
-    **ATE**
-        ATE_IND.1   Independent testing - conformance       ADV_FSP.1
-                                                            AGD_ADM.1
-                                                            AGD_USR.1
-    ==============  ======================================  ===================
-
-Security requirements for the IT environment
---------------------------------------------
-
-
-ITITIT
-
-The following security requirements exist for the IT environment:
-
-The operating system is Windows 2000, Windows XP or Linux. Either all
-known security patches must have been installed.
-
-The Python Version is 2.3.2 or a compatible Bugfix release.
-
-The ZODB storage is FSStorage or XXX ... What else?.
-
-The client software must support "protected authentication feedback"
-(FIA_UAU.7), to at least not echo a user's credentials in plain text.
-
-One or more "trusted paths" to the TOE must be provided using secure
-proxies, such as an HTTPS proxy like apache w ssl, or Pound.
-
-If external IT systems are used, a trusted channel between the TOE and
-those systems must be provided by the TOE host environment.  For
-example, while the TOE may communicate with clients on a public
-network through a specific port allowed through a firewall, all
-communication with other IT systems could be over a private network.
-
-
-To ensure a "trusted path" to the TOE, users of the TOE must use
-secure proxies correctly (for example, being sure to accept only
-valid server certificates with HTTPS).
-
-Security requirements for the non-IT environment
-------------------------------------------------
-
-XXX I can't find any right here, maybe I should check cross-references, but it
-also looks like non-IT requirements are not mandatory.
-
-TOE summary specification
-=========================
-
-TOE security functions
-----------------------
-
-The major functions implemented by the TOE are:
-
-Protection
-----------
-
-The protection subsystem is responsible for controlling the access of
-subjects to objects.  It does this through the use of security
-proxies.  Any non-basic objects that an interaction accesses is
-wrapped in a security proxy.  All operations on these non-basic
-objects are performed through the security proxies. 
-
-        Protection
-        ^^^^^^^^^^
-
-        XXX To cover: FDP_ACC.2, FDP_ACF.1, FDP_ETC.2, FDP_ITC.1, FDP_ITC.2,
-        FDP_ROL.1_UNDO, FAU_UAU.1, FMT_MOF.1, FMT_MSA.1, FMT_SMR.1, FPT_RVM.1,
-        FPT_SEP.1 
-
-        The protection subsystem is responsible for controlling the access of
-        interactions (subjects) to objects.  It does this through the use of
-        security proxies.  Any non-basic objects that an interaction accesses
-        is wrapped in a security proxy.  All operations on these non-basic
-        objects are performed through the security proxies.  
-
-        Basic objects are immutable objects that contain only immutable
-        subobjects. Examples if basic objects include:
-
-        - Strings,
-
-        - Integers (long and normal),
-
-        - Floating-point objects,
-
-        - Date-time objects, 
-
-        - Boolean objects (True and False), and 
-
-        - The special (nil) object, None.
-
-        Subjects only have access to basic objects and proxied objects.
-
-        For the purposes of the protection system, all operations can be
-        reduced to one of two kinds of operations:
-
-        - Read the value of a named attribute
-
-        - Write the value of a named attribute
-
-        Higher-level operations are reduced to these low-level operations. For example,
-        to look up a key in a mapping object, we first execute read operation on the
-        '__getitem__' attribute.  The value of the '__getitem__' attribute is the
-        Python method for looking up a key.  To actually call the method, we need to
-        access it's '__call__' attribute.
-
-Authentication
---------------
-
-Zope provides a flexible authentication schema that by default supports HTTP
-Basic Auth, HTTP Cookie auth and is extensible to support different data
-storages...
-
-Authorization
--------------
-
-Zope provides authorization mechanisms that decide wether an operation under a
-given subject is allowed...
-
-Auditing
---------
-
-Zope provides an auditing system that listens for events within Zope according
-to the SFRs described above. It is implemented using the event
-framework of Zope 3 to subscribe to the audit relevant events and log them
-appropriately. The provided infrastructure (event listener + logger)
-satisfies the requirements as described in FAU_GEN.1 and FAU_GEN.2.
-
-Zope relies on the operating system to deliver reliable time stamps for the
-audit log.
-
-Transaction management
-----------------------
-
-Undo
-----
-
-Publisher
----------
-
-Automated Tests
----------------
-
-Zope provides a suite of automated tests that allow the user to ensure that
-the security functionality implemented with a delivered package is consistent
-with the tests. Those tests can be run as unit tests in offline mode.
-
-    Automated tests
-    ^^^^^^^^^^^^^^^
-
-    One objective of the Zope 3 effort is to provide a good coverage of all
-    functions with automated tests to support the agile software development process.
-    Those are tests that are written in Python and run as test scenarios to assure
-    correct functioning of components with respect to their declared interfaces.
-
-    A subset of those tests is the set of tests that cover the security functions.
-    Zope 3 provides a program to run those tests and gather feedback about the
-    result. This is done as an offline operation outside of Zope itself.
-
-    The tests are provided as modules called "tests" that reside
-    within the packages they provide tests for. The provided utility is able to
-    run only subsets of those specific to their location within the Zope package
-    hierarchy.
-
-    Those tests cover the abstract machine testing as described in FPT_AMT.1.
-
-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-
-- permission declarations [isn't needed IMHO, Christian]
-
-X protection
-
-X authentication [Christian, ]
-
-X authorization (aka access)
-
-X auditing [Christian, done?]
-
-X transaction management
-
-X undo
-
-X publisher
-
-X automated tests [Christian, done?]
-
-Additionally the Python and host environment provide functionality
-required by the security functions.
-
-XXX Helpful points to start: SecurityFramework in Wiki
-
-Definitions
-^^^^^^^^^^^
-
-Principal
-        An object, managed by an Authentication service that
-        represents a user of the system.  Principal have 
-        system-unique identifiers that aree used by other systems to maintain
-        information about them.
-
-Permission
-        An object, managed by the Zope application that represents the
-        ability to perform one or more operations.
-
-
-The auditing subsystem
-^^^^^^^^^^^^^^^^^^^^^^
-
-Zope provides an auditing system that listens for events within Zope according
-to the SFRs described above. It is implemented using the event
-framework of Zope 3 to subscribe to the audit relevant events and log them
-appropriately. The provided infrastructure (event listener + logger)
-satisfies the requirements as described in FAU_GEN.1 and FAU_GEN.2.
-
-Zope relies on the operating system to deliver reliable time stamps for the
-audit log. 
-
-    Annotation: The ZODB assures that timestamps for transactions increase
-    monotonously with at least one microsecond since the last to work around
-    compromised clocks.
-
-XXX talk about the format here
-
-The events are defined outside the TSC within ZCML configuration statements
-within the other Zope packages that are relevant for the events defined by the
-SFRs.
-
-Events supported by Zope
-************************
-
-Following events are supported by Zope:
-
-    -   IAuditStartup, IAuditShutdown for startup and shutdown of the audit
-        function (FAU_GEN.1)
-
-    -   IOperationAllowed, IOperationDenied for a successful/unsuccessful
-        request to perform an operation on an object covered by the SFP
-        (FAU_ACF.1)
-
-    -   IExportSuccess, IExportFailure for a successful/unsuccessful attempt to
-        export user data. (FDP_ETC.2)
-
-    -   IImportSuccess, IImportFailure which detail imported security
-        attributes for a successfull/unsuccessfull attempt to import user data
-        (FDP_ITC.1, FDP_ITC.2)
-
-    -   ITransactionAbortSuccess, ITransactionAbortFailure for a
-        successfull/unsuccessfull attempt to abort a transaction.
-        (FDP_ROL.2_TRANSACTIONS)
-
-    -   IUndoSuccess, IUndoFailure for a successful/unsuccessful attempt to
-        undo former transactions within Zope. (FDP_ROL.1_UNDO)
-
-    -   IFailedAuthenticationThresholdfor surpassing the threshold of
-        authentication failures and IAuthenticationFailureReset for
-        re-enabling a disabled login name after the configured period of time.
-        (FIA_AFL_z.1)
-
-    -   IAuthenticationFailure for unsuccessful use of the authentication
-        mechanism. (FIA_UAU.1)
-
-    -   IAuthenticationDecision for a final authentication decision (FIA_UAU.5)
-
-    -   IReauthenticationFailure for unsuccessful re-authentication attempts
-        (FIA_UAU.6) 
-        XXX Could that be covered by IAuthenticationFailure? Or is
-        this maybe a derived interface?
-
-    -   IUSBFailure for unsuccessful binding of user security attributes to an
-        interaction (FIA_USB.1) XXX argh ... i wonder about an actual example
-        for that ...
-        
-    -   IAuthenticationManagement for changes to the authentication functions
-        (like adding/removing principals, exchanging authentication modules
-        ...) (FMT_MOF.1) XXX not required by minimal auditing
-
-    -   ISecurityAttributeModification for modifications to security
-        attributes (grants, denies, login names, passwords) (FMT_MSA.1,
-        FMT_SMR.1) XXX FMT_MSA.1 is not required by minimal auditing
-        
-Exceptions from the functional requirements for auditing
-********************************************************
-
-As Zope relies on Python and the host environment to provide reliable time
-stamps, we regard auditing adjustments to the time being out of scope.
-Therefore external log mechanisms (Syslog on Unix hosts or the Event log on
-Windows hosts) should be consulted to detect those changes. (FPT_STM.1)
-
-Assurance measures
-------------------
-
-AM_ACM: CONFIGURATION MANAGEMENT
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A document describing the configuration management will be provided.
-
-AM_ADO: DELIVERY AND OPERATION
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-A document describing the delivery and operation of the TOE will be provided.
-
-AM_ADV: DEVELOPMENT
-^^^^^^^^^^^^^^^^^^^
-
-A functional specification and a RCR document will be provided.
-
-AM_AGD: GUIDANCE DOCUMENTS
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The guidance documents AGD_ADM and AGD_USR will be provided.
-
-AM_ATE: TESTS
-^^^^^^^^^^^^^
-
-No deliverable. Only independend testing from the evaluator is needed.
-
-PP claims
-=========
-
-There are no PP claims.
-
-SOF claims
-==========
-
-There is no SOF claim here for EAL 1.
-
-Rationale
-=========
-
-Security objectives rationale
------------------------------
-
-XXX
-
-Security requirements rationale
--------------------------------
-
-XXX
-
-Choice of security functional requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-XXX
-
-Justification for suitability of SFR - TOE security objectives
---------------------------------------------------------------
-
-Choice of TOE security assurance requirements
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The choice of assurance requirements is based on the analysis of the security
-objectives for the TOE and on functional requirements defined to meet these
-objectives.  
-
-The assurance level is **EAL 1**.
-
-Evaluation Assurance Level rationale:
--------------------------------------
-
-
-XXX review this paragraph please.
-
-The Zope development community recognizes the need of mature and well defined
-security functions by its users.
-
-Therefore to meet this requirements the decision for an entry level evaluation
-was made in respect to the resource constraints of available developers and
-budget. 
-
-Additionally an entry level evaluation gives a glance to the community how
-certification may effect Zopes degree of documentation and stabilize the good
-security history even more, maybe raising the interest for projects that require
-good security behaviour and seek free alternatives. 
-
-It is intended to show that mature open source projects can outperform
-proprietary systems not only on pure functional and monetary aspects but also
-in domains that are typically governed by proprietary systems.
-
-Glossary
-========
-
-CC
-    Common Criteria (referenced as [CC])
-    
-SF
-    Security Function
-    
-SFP
-    Security Function Policy
-    
-SFR
-    Security Functional Requirement
-    
-ST
-    Security Targets
-   
-TOE
-    Target of Evaluation
-    
-TSF
-    TOE Security Functions
-
-TODO
-====
-
-General
--------
-
-    *   Bibliographic references
-
-    *   Numbering of sections would be fine
-
-    *   Consolidate the use of the term "anonymous user", "anonymous principal"
-
-    *   Consolidate the use of the term "permission grant" and "permissions"
-    
-Part 1
-------
-
-    *   Threat agents
-
-    *   TOE description
-
-    *   TOE security functions
-
-Part 2
-------
-
-    *   Rationale
-
-
-Nice to have / Future
-=====================
-
-  * FPT_TST is mostly handled by unit tests. What we don't handle is
-    data integrity.  This might be something to consider for future
-    evaluations. 
-
-  * FTA_TAH.1 TOE access history
-
-  * FIA_SOS.1 Specification of "identification" functions.
-
-Notes
-=====
-
-- XXX we might want to think about realigning our terminology
-  (Access/protection/authorization)
-
-- The TOE will not have TTW created (untrusted) and stored code.
-  So, no TTW templates. 
-
-- There should be some advice somewhere of the importance of having
-  universal (as opposed to system) principal and permission
-  identifiers if "export of user data with security attributes" is
-  supported.  We might want to think about using guids in auth
-  services.
-
-- There must be no operations inder the control of the TSF that cause
-  data to be modified non-transactionally.  An exception to this rule
-  is that cache data are not transactional.
-
-- It would be useful, when time allows (hehe) to abstract the security
-  policy into a profile and then see if other security-profiles could
-  be "substituted".
-
-- We will need to define events that the auditing system can subscribe
-  to to do what it wants.  Ideally, these events should not be defined
-  by the auditing system, so as not to create dependencies of other
-  systems on the logging system.
-
-
-Questions to Zope 3 Dev
-=======================
-
-FAU_GEN.1.2
-    Other audit data to store?        
-
-What about the "nice to have" functions?
-
-    FIA_SOS.1   :   password effectiveness check
-    FIA_AFL.1   :   authentication failure counter
-    
-Should we refer to some "hard coded" permissions that will be required to perform
-certain tasks? (e.g. for adding/deleting principals, granting permissions ...)
-This will make the evaluation more specific and/but easier.
-
-* Please look through the security functions (chapter TOE summary specification)
-  and check if there is wrong terminology. Also we probably will have to implement
-  some of the stuff i'm claiming there. :)
-
-* Jim talked about something that is described in FMT_SMR.3:
-  "Assuming roles requires that an explicit request is given to the TSF to assume a Role".
-  Are we going to have that?
-
-* In TSF_AUD (summary specification): I'm guessing about the function of the security audit
-  logger (doesn't sound too hard, maybe I should/could write that thing)
-

Copied: Zope3/branches/dominik-locatableadapters/package-includes/wfmc-configure.zcml (from rev 30223, Zope3/trunk/package-includes/wfmc-configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/package-includes/wfmc-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/package-includes/zope.app.pluggableauth-configure.zcml (from rev 30223, Zope3/trunk/package-includes/zope.app.pluggableauth-configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/package-includes/zope.app.pluggableauth-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/releases/ZopeX3/DEPENDENCIES.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/releases/ZopeX3/DEPENDENCIES.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/releases/ZopeX3/DEPENDENCIES.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -6,6 +6,7 @@
 
 zope.app
 zope.app.apidoc
+zope.app.authentication
 zope.app.dav
 zope.app.debugskin
 zope.app.dtmlpage
@@ -16,9 +17,11 @@
 zope.app.introspector
 zope.app.mail
 zope.app.onlinehelp
+zope.app.pluggableauth
 zope.app.rdb
 zope.app.securitypolicy
 zope.app.server
+zope.app.session
 zope.app.sqlscript
 zope.app.tree
 zope.app.undo

Modified: Zope3/branches/dominik-locatableadapters/releases/ZopeX3/README.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/releases/ZopeX3/README.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/releases/ZopeX3/README.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -14,7 +14,7 @@
 Requirements
 ------------
 
-Zope X3 requires that Python 2.3.4 or newer be installed.
+Zope X3 requires that Python 2.3.5 or newer be installed.
 
 Building the Zope X3 software requires a C compiler supported by the
 distutils.
@@ -39,15 +39,15 @@
   Testing for an acceptable Python interpreter...
 
   Python version 2.4a0 found at /usr/local/bin/python
-  Python version 2.3.4 found at /usr/local/bin/python2.3
+  Python version 2.3.5 found at /usr/local/bin/python2.3
 
-  The optimum Python version (2.3.4) was found at /usr/local/bin/python2.3.
+  The optimum Python version (2.3.5) was found at /usr/local/bin/python2.3.
 
 If you want to specify which Python should be used with Zope, use the
 "--with-python" option to indicate the specific Python interpreter to
 use:
 
-  $ ./configure --with-python /opt/Python-2.3.4/bin/python
+  $ ./configure --with-python /opt/Python-2.3.5/bin/python
 
   Using Python interpreter at python2.3
 
@@ -66,9 +66,9 @@
   Testing for an acceptable Python interpreter...
 
   Python version 2.4a0 found at /usr/local/bin/python
-  Python version 2.3.4 found at /usr/local/bin/python2.3
+  Python version 2.3.5 found at /usr/local/bin/python2.3
 
-  The optimum Python version (2.3.4) was found at /usr/local/bin/python2.3.
+  The optimum Python version (2.3.5) was found at /usr/local/bin/python2.3.
 
 If you want to use the same prefix as a previous installation, you
 need to remove the original installation first.  Instances created


Property changes on: Zope3/branches/dominik-locatableadapters/src
___________________________________________________________________
Name: svn:externals
   - BTrees         svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/BTrees
persistent     svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/persistent
ThreadedAsync  svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/ThreadedAsync
transaction    svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/transaction
ZEO            svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/ZEO
ZODB           svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a3/src/ZODB

   + BTrees         svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/BTrees
persistent     svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/persistent
ThreadedAsync  svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/ThreadedAsync
transaction    svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/transaction
ZEO            svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/ZEO
ZODB           svn://svn.zope.org/repos/main/ZODB/tags/3.4.0a5/src/ZODB


Copied: Zope3/branches/dominik-locatableadapters/src/buddydemo/I18N.txt (from rev 30223, Zope3/trunk/src/buddydemo/I18N.txt)

Modified: Zope3/branches/dominik-locatableadapters/src/buddydemo/info.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/buddydemo/info.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/buddydemo/info.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -13,10 +13,10 @@
     <tr><td i18n:translate="">Address:</td>
         <td tal:content="context/address">1 First Street</td>
         </tr>
-    <tr><td>City:</td>
+    <tr><td i18n:translate="">City:</td>
         <td tal:content="view/city | default">City</td>
         </tr>
-    <tr><td>State:</td>
+    <tr><td i18n:translate="">State:</td>
         <td tal:content="view/state | default">State</td>
         </tr>
     <tr><td i18n:translate="">Postal code:</td>

Modified: Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/buddydemo.pot
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/buddydemo.pot	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/buddydemo.pot	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2003 Zope Corporation and Contributors.
+# Copyright (c) 2003-2004 Zope Corporation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -13,36 +13,40 @@
 ##############################################################################
 msgid ""
 msgstr ""
-"Project-Id-Version: Zope X3 Pre-M4\n"
-"POT-Creation-Date: Fri Mar 19 17:35:16 2004\n"
+"Project-Id-Version: Development/Revision: 30016\n"
+"POT-Creation-Date: Mon Apr 18 15:59:03 2005\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: zope/app/translation_files/extract.py\n"
+"Generated-By: zope/app/locales/extract.py\n"
 
-#: src/buddydemo/configure.zcml:25
+#: src/buddydemo/configure.zcml:27
 msgid "Edit"
 msgstr ""
 
-#: src/buddydemo/configure.zcml:25
+#: src/buddydemo/configure.zcml:27
 msgid "Change Buddy Information"
 msgstr ""
 
-#: src/buddydemo/configure.zcml:33
+#: src/buddydemo/configure.zcml:35
 msgid "Add buddy information"
 msgstr ""
 
-#: src/buddydemo/configure.zcml:42
+#: src/buddydemo/configure.zcml:44
 msgid "Buddy"
 msgstr ""
 
-#: src/buddydemo/configure.zcml:71
+#: src/buddydemo/configure.zcml:73
 msgid "Rename"
 msgstr ""
 
+#: src/buddydemo/configure.zcml:93
+msgid "Buddy Folder"
+msgstr ""
+
 #: src/buddydemo/info.pt:10
 msgid "Email:"
 msgstr ""
@@ -51,6 +55,14 @@
 msgid "Address:"
 msgstr ""
 
+#: src/buddydemo/info.pt:16
+msgid "City:"
+msgstr ""
+
+#: src/buddydemo/info.pt:19
+msgid "State:"
+msgstr ""
+
 #: src/buddydemo/info.pt:22
 msgid "Postal code:"
 msgstr ""
@@ -85,6 +97,11 @@
 msgid "Postal code"
 msgstr ""
 
+#: src/buddydemo/rename.pt:17
+# Default: "Save Changes"
+msgid "rename-button"
+msgstr ""
+
 #: src/buddydemo/rename.pt:5
 msgid "Enter the Buddy information"
 msgstr ""

Copied: Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/en (from rev 30223, Zope3/trunk/src/buddydemo/locales/en)

Copied: Zope3/branches/dominik-locatableadapters/src/buddydemo/locales/ru (from rev 30223, Zope3/trunk/src/buddydemo/locales/ru)

Modified: Zope3/branches/dominik-locatableadapters/src/buddydemo/rename.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/buddydemo/rename.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/buddydemo/rename.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -14,5 +14,6 @@
            tal:attributes="value context/last" /> </td>
   </tr>
 </table>
-<input type="submit" name="submit" value="Save Changes" />
+<input type="submit" name="submit" value="Save Changes"
+    i18n:attributes="value rename-button"/>
 </form></div></body></html>

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/I18N.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/I18N.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/I18N.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -7,16 +7,14 @@
     1. Install 'bugtracker' in 'ZOPE3/src'. See INSTALL.txt for details.
 
     2. Set the the Python path::
-       
+
         export PYTHONPATH=ZOPE3/src
-  
-    3. Go into the 'locales' directory and execute extract.py::
 
-      python2.3 utilities/i18nextract.py -d bugtracker \
-                                         -p src/bugtracker/ \
-                                         -o locales
+    3. Go into the 'locales' directory and execute i18nextract.py::
 
+      python2.3 utilities/i18nextract.py -d bugtracker -p ..
 
+
   Updating Message Catalog (PO) Files
   -----------------------------------
 

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_add.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_add.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_add.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="context/@@standard_macros/dialog">
+<html metal:use-macro="context/@@standard_macros/dialog"
+    i18n:domain="bugtracker">
 <body>
 <div metal:fill-slot="body">
 
@@ -8,18 +9,18 @@
     <h3 tal:condition="view/label"
         tal:content="view/label"
         >Edit something</h3>
-  
+
     <p tal:define="status view/update"
        tal:condition="status"
        tal:content="status" />
-  
+
     <p tal:condition="view/errors">
       <span i18n:translate="">There are
-      <strong tal:content="python:len(view.errors)" 
+      <strong tal:content="python:len(view.errors)"
               i18n:name="num_errors">6</strong>
       input errors.</span>
     </p>
-  
+
     <div>
 
       <div class="row">
@@ -67,7 +68,7 @@
       <div class="controls">
         <input type="submit" value="Refresh" 
             i18n:attributes="value refresh-button" />
-        <input type="submit" name="UPDATE_SUBMIT" value="Submit" 
+        <input type="submit" name="UPDATE_SUBMIT" value="Submit"
             i18n:attributes="value submit-button"/>
       </div>
     </div>

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_edit.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_edit.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_edit.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="bugtracker">
 <head>
   <style metal:fill-slot="style_slot"
       type="text/css" media="all"
@@ -17,7 +18,7 @@
     <p tal:define="status view/update"
        tal:condition="status"
        tal:content="status" />
-    
+
     <p tal:condition="view/errors">
       <span i18n:translate="">There are
       <strong tal:content="python:len(view.errors)" 
@@ -73,13 +74,13 @@
       <div class="controls">
         <input type="submit" value="Refresh" 
             i18n:attributes="value refresh-button" />
-        <input type="submit" name="UPDATE_SUBMIT" value="Submit" 
+        <input type="submit" name="UPDATE_SUBMIT" value="Submit"
             i18n:attributes="value submit-button"/>
       </div>
     </div>
-    
+
     </form>
-    
+
   </div>
 </body>
 </html>

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_overview.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_overview.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/bug_overview.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="bugtracker">
 <head>
   <style metal:fill-slot="style_slot"
       type="text/css" media="all"
@@ -59,40 +60,40 @@
   <h4 i18n:translate="">Description</h4>
   <div class="single_p" id="description"
       tal:content="structure view/description">Bug Description</div>
-  
+
   <h4 i18n:translate="" i18n:domain="bugtracker">Direct Dependencies</h4>
   <div class="single_p">
     <tal:block repeat="dep view/dependencies" tal:omit-tag="">
       <a href="" tal:attributes="href string:../$dep"
                  tal:content="dep">Dep Bug</a>
       <d tal:condition="not:repeat/dep/end" tal:replace="string:," />
-  
+
     </tal:block>
   </div>
   <div class="action" i18n:domain="bugtracker">
-    <a href="./@@+/action.html?type_name=AddDependentBug.html" 
+    <a href="./@@+/action.html?type_name=AddDependentBug.html"
       i18n:translate="">Add Bug</a>
   </div>
-  
+
   <h4 i18n:translate="" i18n:domain="bugtracker">Attachments</h4>
   <ul id="attachments" tal:condition="view/attachments">
     <li tal:repeat="attch view/attachments">
-        <a href="" tal:attributes="href string: ./${attch/name}" 
+        <a href="" tal:attributes="href string: ./${attch/name}"
                    tal:content="attch/name">Attachment 1</a>
         (<div tal:replace="attch/size">Size here</div>)
     </li>
   </ul>
   <div class="action" i18n:domain="bugtracker">
-    <a href="./@@+/action.html?type_name=zope.app.file.File" 
+    <a href="./@@+/action.html?type_name=zope.app.file.File"
       i18n:translate="">Add File</a> |
-    <a href="./@@+/action.html?type_name=zope.app.file.Image" 
+    <a href="./@@+/action.html?type_name=zope.app.file.Image"
       i18n:translate="">Add Image</a>
   </div>
 
   <h4 i18n:translate="" i18n:domain="bugtracker">Comments</h4>
   <div tal:repeat="comment view/comments" i18n:domain="">
       <h5 style="margin: 0em 0.6em" i18n:translate="">
-        Entry #<d tal:replace="repeat/comment/number" i18n:name="bug_id"/> by 
+        Entry #<d tal:replace="repeat/comment/number" i18n:name="bug_id"/> by
         <d tal:replace="comment/creator/title" i18n:name="creator"/> on 
         <d tal:replace="comment/modified" i18n:name="modified_datetime"/>
       </h5>
@@ -100,7 +101,7 @@
        tal:content="structure comment/body">Comment body</div>
   </div>
   <div class="action" i18n:domain="bugtracker">
-    <a href="./@@+/action.html?type_name=AddBugComment.html" 
+    <a href="./@@+/action.html?type_name=AddBugComment.html"
       i18n:translate="">Add Comment</a>
   </div>
 

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/dialog_macros.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/dialog_macros.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/dialog_macros.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,10 +4,11 @@
   xmlns="http://www.w3.org/1999/xhtml"
   xml:lang="en"
   lang="en" 
-  i18n:domain="zope">
+  i18n:domain="bugtracker">
 
   <head>
-    <title metal:define-slot="title">Zope 3 Bug Tracker</title>
+  <title metal:define-slot="title"
+      i18n:translate="">Zope 3 Bug Tracker</title>
 
 
     <style type="text/css" 
@@ -90,7 +91,7 @@
             <div class="body">
               <div class="content odd">
                 <metal:block define-slot="pagetip" tal:replace="pagetip">
-                  A short tip goes here              
+                  A short tip goes here
                 </metal:block>
               </div>
             </div>
@@ -100,7 +101,7 @@
     </div>
 
     <div id="footer"
-      metal:define-macro="footer">
+      metal:define-macro="footer" i18n:translate="">
       Powered by Zope 3. Written by Stephan Richter in 2003.
     </div>
 

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/template.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/template.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/skin/template.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -3,13 +3,13 @@
 <html xmlns="http://www.w3.org/1999/xhtml"
     xml:lang="en"
     lang="en"
-    i18n:domain="zope">
+    i18n:domain="bugtracker">
 
   <head>
-    <title 
+    <title
         metal:define-slot="title"
         tal:content="context/title|default"
-        i18n:domain="bugtracker" i18n:translate="">Zope 3 Bug Tracker</title>
+        >Zope 3 Bug Tracker</title>
 
 
     <style type="text/css"
@@ -148,8 +148,7 @@
                                            + url + ','
                                            + name + ','
                                            + settings +')'"
-               tal:content="help_info/title"
-               i18n:translate="">
+               tal:content="help_info/title" >
               Action name
           </a>
         </span>
@@ -228,8 +227,8 @@
       </div>
     </div>
 
-    <div id="footer" metal:define-macro="footer" 
-         i18n:domain="bugtracker" i18n:translate="">
+    <div id="footer" metal:define-macro="footer"
+         i18n:translate="">
       Powered by Zope 3. Written by Stephan Richter in 2003.
     </div>
 

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -184,11 +184,11 @@
     #   - Vocabulary Registry name
     #   - Display Title
     #   - bug attribute name
-    filter_vars = (('stati', 'Stati', 'Status', 'status'),
-                   ('types', 'BugTypes', 'Type', 'type'),
-                   ('releases', 'Releases', 'Release', 'release'),
-                   ('priorities', 'Priorities', 'Priority', 'priority'),
-                   ('owners', 'Users', 'Owners', 'owners'),
+    filter_vars = (('stati', 'Stati', _('Status'), 'status'),
+                   ('types', 'BugTypes', _('Type'), 'type'),
+                   ('releases', 'Releases', _('Release'), 'release'),
+                   ('priorities', 'Priorities', _('Priority'), 'priority'),
+                   ('owners', 'Users', _('Owners'), 'owners'),
                    )
 
     def getBugs(self):

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_add.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_add.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_add.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="context/@@standard_macros/page">
+<html metal:use-macro="context/@@standard_macros/page"
+    i18n:domain="bugtracker">
 <body>
 
   <div metal:fill-slot="body">

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_overview.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_overview.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_overview.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="context/@@standard_macros/view">
+<html metal:use-macro="context/@@standard_macros/view"
+    i18n:domain="bugtracker">
 <head>
   <style metal:fill-slot="style_slot"
       type="text/css" media="all"
@@ -12,22 +13,22 @@
 <div metal:fill-slot="body" tal:define="bugs view/getBugs">
 
   <div class="box">
-    <h4 style="padding: 0.3em">Filter Options</h4>
+    <h4 style="padding: 0.3em" i18n:translate="">Filter Options</h4>
     <div class="body">
-      <form action="updateOverviewSettings.html" method="post" 
+      <form action="updateOverviewSettings.html" method="post"
           class="even" style="padding: 0.5em;"
           tal:define="settings view/getSettingsInfo">
-            
+
         <div class="row"
             tal:condition="view/getShowFilterOptions">
           <div class="field">
-            <b>Filter Text</b>
+            <b i18n:translate="">Filter Text</b>
             <input type="text" name="search_text" value=""
                 tal:attributes="value view/getSearchText">
           </div>
           <div class="field">&nbsp;&nbsp;&nbsp;&nbsp;</div>
           <div class="field">
-            <b>View Type</b>
+            <b i18n:translate="">View Type</b>
             <select name="view_type">
               <tal:block repeat="vt python: ('normal', 'compressed')">
                 <option selected=""
@@ -42,11 +43,11 @@
             </select>
           </div>
         </div>
-    
+
         <div class="row"
             tal:condition="view/getShowFilterOptions">
           <div class="field" tal:repeat="var settings">
-    
+
             <b tal:content="var/title">Status</b><br/>
             <select size="5" name="stati:list" multiple="yes"
                 tal:attributes="name string:${var/name}:list">
@@ -61,7 +62,7 @@
                   tal:content="entry/title">New</option>
               </tal:block>
             </select>
-    
+
           </div>
         </div>
         <div class="row">
@@ -74,14 +75,14 @@
             <input type="submit" name="COLLAPSE" value="Collapse"
                 tal:condition="view/getShowFilterOptions"
                 i18n:attributes="value collapse-button" />
-    
+
             <input type="submit" name="EXPAND" value="Expand" 
                 tal:condition="not: view/getShowFilterOptions"
-                i18n:attributes="value expand-button" />        
+                i18n:attributes="value expand-button" />
           </div>
         </div>
         <div class="clear"/>
-    
+
       </form>
     </div>
   </div>
@@ -89,12 +90,12 @@
   <div class="row" i18n:domain="bugtracker">
     <div class="control">
       <form action="./+/AddBug.html=" method="post">
-        <input type="submit" name="add" value="Add Bug" 
+        <input type="submit" name="add" value="Add Bug"
                i18n:attributes="value add-bug-button"/>
       </form>
     </div>
   </div>
-  <div class="batch" tal:condition="bugs/startNumber" i18n:domain="bugtracker">
+  <div class="batch" tal:condition="bugs/startNumber">
     <div class="prev_batch" tal:define="prev bugs/prevBatch">
       <a href=""
           tal:condition="prev"
@@ -102,12 +103,12 @@
               string:./@@overview.html?start=${prev/start}&size=${prev/size}"
           i18n:translate="">
         Previous
-        (<d tal:replace="prev/startNumber" i18n:name="start_number" /> to 
+        (<d tal:replace="prev/startNumber" i18n:name="start_number" /> to
          <d tal:replace="prev/endNumber" i18n:name="end_number" />) 
       </a>&nbsp;
     </div>
     <div class="curr_batch" i18n:translate="">
-        <d tal:replace="bugs/startNumber" i18n:name="start_number"/> to 
+        <d tal:replace="bugs/startNumber" i18n:name="start_number"/> to
         <d tal:replace="bugs/endNumber" i18n:name="end_number"/>
         of <d tal:replace="bugs/total" i18n:name="batch_total_number"/> found
         (<d tal:replace="view/numberOfBugs" i18n:name="bug_number"/> total)
@@ -119,22 +120,22 @@
               string:./@@overview.html?start=${next/start}&size=${next/size}"
           i18n:translate="">
         Next
-        (<d tal:replace="next/startNumber" i18n:name="start_number" /> to 
-         <d tal:replace="next/endNumber" i18n:name="end_number" />) 
+        (<d tal:replace="next/startNumber" i18n:name="start_number" /> to
+         <d tal:replace="next/endNumber" i18n:name="end_number" />)
       </a>&nbsp;
     </div>
-    <div class="clear"></div> 
+    <div class="clear"></div>
   </div>
 
-  <div 
+  <div
       tal:condition="python: view.getViewType() == 'normal'"
       tal:replace="structure view/bug_listing_normal" />
 
-  <div 
+  <div
       tal:condition="python: view.getViewType() == 'compressed'"
       tal:replace="structure view/bug_listing_compressed" />
 
-  <div class="batch" tal:condition="bugs/startNumber" i18n:domain="bugtracker">
+  <div class="batch" tal:condition="bugs/startNumber">
     <div class="prev_batch" tal:define="prev bugs/prevBatch">
       <a href=""
           tal:condition="prev"
@@ -142,12 +143,12 @@
               string:./@@overview.html?start=${prev/start}&size=${prev/size}"
           i18n:translate="">
         Previous
-        (<d tal:replace="prev/startNumber" i18n:name="start_number" /> to 
-         <d tal:replace="prev/endNumber" i18n:name="end_number" />) 
+        (<d tal:replace="prev/startNumber" i18n:name="start_number" /> to
+         <d tal:replace="prev/endNumber" i18n:name="end_number" />)
       </a>&nbsp;
     </div>
     <div class="curr_batch" i18n:translate="">
-        <d tal:replace="bugs/startNumber" i18n:name="start_number"/> to 
+        <d tal:replace="bugs/startNumber" i18n:name="start_number"/> to
         <d tal:replace="bugs/endNumber" i18n:name="end_number"/>
         of <d tal:replace="bugs/total" i18n:name="batch_total_number"/> found
         (<d tal:replace="view/numberOfBugs" i18n:name="bug_number"/> total)
@@ -159,8 +160,8 @@
               string:./@@overview.html?start=${next/start}&size=${next/size}"
           i18n:translate="">
         Next
-        (<d tal:replace="next/startNumber" i18n:name="start_number" /> to 
-         <d tal:replace="next/endNumber" i18n:name="end_number" />) 
+        (<d tal:replace="next/startNumber" i18n:name="start_number" /> to
+         <d tal:replace="next/endNumber" i18n:name="end_number" />)
       </a>&nbsp;
     </div>
     <div class="clear"></div> 
@@ -168,7 +169,7 @@
   <div class="row" i18n:domain="bugtracker">
     <div class="control">
       <form action="./+/AddBug.html=" method="post">
-        <input type="submit" name="add" value="Add Bug" 
+        <input type="submit" name="add" value="Add Bug"
                i18n:attributes="value add-bug-button"/>
       </form>
     </div>

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_settings.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_settings.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/browser/tracker_settings.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,8 +1,9 @@
-<html metal:use-macro="context/@@standard_macros/view">
+<html metal:use-macro="context/@@standard_macros/view"
+    i18n:domain="bugtracker">
 <body>
 <div metal:fill-slot="body">
 
-  <div tal:repeat="vocab view/getManagableVocabularyViews">     
+  <div tal:repeat="vocab view/getManagableVocabularyViews">
 
   <h2 tal:content="vocab/title">Some Variable Definitions</h2>
   <br />
@@ -11,7 +12,7 @@
     <input type="hidden" name="iface" value=""
         tal:attributes="value vocab/vocab_iface/getName" />
 
-    <b i18n:translate="" i18n:domain="bugtracker">Existing Values:</b> 
+    <b i18n:translate="">Existing Values:</b>
     <select size="5" name="values:list" multiple="yes">
       <tal:block repeat="entry vocab/getExistingValues">
         <option value=""
@@ -21,12 +22,12 @@
         </option>
       </tal:block>
     </select>
-    <input type="submit" name="deleteValues.html:method" value="Delete" 
+    <input type="submit" name="deleteValues.html:method" value="Delete"
            i18n:attributes="value delete-button"/>
     <input type="submit" name="setDefaultValue.html:method" 
            value="Set Default" i18n:attributes="value set-default-button"/>
     <br>
-    <b i18n:translate="" i18n:domain="bugtracker">Default Value:</b>
+    <b i18n:translate="">Default Value:</b>
     <span tal:define="default vocab/default" 
           tal:content="string: ${default/title} (${default/value})" />
 
@@ -35,7 +36,7 @@
       <input type="text" size="10" name="value" />
     <span i18n:translate="">Title:</span>
       <input type="text" size="10" name="title" />
-    <input type="submit" name="addValue.html:method" value="Add" 
+    <input type="submit" name="addValue.html:method" value="Add"
            i18n:attributes="value add-button"/>
   </form>
 

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/bugtracker.pot
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/bugtracker.pot	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/bugtracker.pot	2005-05-02 07:44:19 UTC (rev 30224)
@@ -13,8 +13,8 @@
 ##############################################################################
 msgid ""
 msgstr ""
-"Project-Id-Version: Development/Revision: 27349\n"
-"POT-Creation-Date: Mon Aug 30 17:09:39 2004\n"
+"Project-Id-Version: Development/Revision: 30057\n"
+"POT-Creation-Date: Wed Apr 20 18:16:40 2005\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -23,17 +23,30 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: zope/app/locales/extract.py\n"
 
+#: src/bugtracker/browser/bug_edit.pt:24
+#: src/bugtracker/browser/bug_add.pt:19
+msgid "There are ${num_errors} input errors."
+msgstr ""
+
+#: src/bugtracker/browser/bug_edit.pt:77
+#: src/bugtracker/browser/bug_add.pt:71
+# Default: "Submit"
+msgid "submit-button"
+msgstr ""
+
 #: src/bugtracker/browser/bug_listing_normal.pt:10
 msgid "Bug #${bug_id} - ${bug_title}"
 msgstr ""
 
 #: src/bugtracker/browser/bug_listing_normal.pt:18
-#: src/bugtracker/browser/bug_edit.pt:42
+#: src/bugtracker/browser/bug_edit.pt:43
+#: src/bugtracker/browser/bug_add.pt:35
 msgid "Status:"
 msgstr ""
 
 #: src/bugtracker/browser/bug_listing_normal.pt:24
-#: src/bugtracker/browser/bug_edit.pt:39
+#: src/bugtracker/browser/bug_edit.pt:40
+#: src/bugtracker/browser/bug_add.pt:32
 msgid "Type:"
 msgstr ""
 
@@ -41,100 +54,112 @@
 msgid "Posted by ${submitter} on ${created_date} - ${num_comments} comments"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:17
-#: src/bugtracker/browser/bug_edit.pt:33
+#: src/bugtracker/browser/bug_overview.pt:18
+#: src/bugtracker/browser/bug_edit.pt:34
 msgid "From ${user} at ${date}"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:33
+#: src/bugtracker/browser/bug_overview.pt:34
 #: src/bugtracker/browser/bug_listing_normal.pt:21
-#: src/bugtracker/browser/bug_edit.pt:48
+#: src/bugtracker/browser/bug_edit.pt:49
+#: src/bugtracker/browser/bug_add.pt:41
 msgid "Priority:"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:38
-#: src/bugtracker/browser/bug_edit.pt:51
+#: src/bugtracker/browser/bug_overview.pt:39
+#: src/bugtracker/browser/bug_edit.pt:52
+#: src/bugtracker/browser/bug_add.pt:44
 msgid "Release Target:"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:43
-#: src/bugtracker/browser/bug_edit.pt:57
+#: src/bugtracker/browser/bug_overview.pt:44
+#: src/bugtracker/browser/bug_edit.pt:58
+#: src/bugtracker/browser/bug_add.pt:50
 msgid "Owners:"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:63
+#: src/bugtracker/browser/bug_overview.pt:54
+#: src/bugtracker/browser/bug_edit.pt:64
+msgid "Last modified:"
+msgstr ""
+
+#: src/bugtracker/browser/bug_overview.pt:64
 msgid "Direct Dependencies"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:77
+#: src/bugtracker/browser/bug_overview.pt:78
 msgid "Attachments"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:86
+#: src/bugtracker/browser/bug_overview.pt:87
 msgid "Add File"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:88
+#: src/bugtracker/browser/bug_overview.pt:89
 msgid "Add Image"
 msgstr ""
 
-#: src/bugtracker/browser/bug_overview.pt:92
+#: src/bugtracker/browser/bug_overview.pt:93
 msgid "Comments"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:142
+#: src/bugtracker/browser/bug_overview.pt:98
+msgid "Entry #${bug_id} by ${creator} on ${modified_datetime}"
+msgstr ""
+
+#: src/bugtracker/browser/configure.zcml:144
 msgid "Add Dependent Bug"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:173
+#: src/bugtracker/browser/configure.zcml:175
 msgid "Change Bug"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:173
-#: src/bugtracker/browser/configure.zcml:260
+#: src/bugtracker/browser/configure.zcml:175
+#: src/bugtracker/browser/configure.zcml:262
 msgid "Edit"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:236
-#: src/bugtracker/browser/bug_overview.pt:103
+#: src/bugtracker/browser/configure.zcml:238
+#: src/bugtracker/browser/bug_overview.pt:104
 msgid "Add Comment"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:252
+#: src/bugtracker/browser/configure.zcml:254
 msgid "Bug Comment"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:252
+#: src/bugtracker/browser/configure.zcml:254
 msgid "A Comment"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:260
+#: src/bugtracker/browser/configure.zcml:262
 msgid "Change Comment"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:29
+#: src/bugtracker/browser/configure.zcml:31
 msgid "Add Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:58
-#: src/bugtracker/browser/configure.zcml:203
+#: src/bugtracker/browser/configure.zcml:60
+#: src/bugtracker/browser/configure.zcml:205
 msgid "Overview"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:64
+#: src/bugtracker/browser/configure.zcml:66
 msgid "Bug Tracker - Overview"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:77
+#: src/bugtracker/browser/configure.zcml:79
 msgid "Settings"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:84
-#: src/bugtracker/browser/configure.zcml:216
+#: src/bugtracker/browser/configure.zcml:86
+#: src/bugtracker/browser/configure.zcml:218
 msgid "Subscriptions"
 msgstr ""
 
-#: src/bugtracker/browser/configure.zcml:96
+#: src/bugtracker/browser/configure.zcml:98
 msgid "XML Export/Import"
 msgstr ""
 
@@ -170,16 +195,6 @@
 msgid "Available Bugs"
 msgstr ""
 
-#: src/bugtracker/browser/dependencies.pt:91
-# Default: "Collapse"
-msgid "collapse-button"
-msgstr ""
-
-#: src/bugtracker/browser/dependencies.pt:95
-# Default: "Expand"
-msgid "expand-button"
-msgstr ""
-
 #: src/bugtracker/browser/exportimport.pt:14
 msgid "Export XML"
 msgstr ""
@@ -221,14 +236,31 @@
 msgid "Subscribers successfully deleted: $emails"
 msgstr ""
 
-#: src/bugtracker/browser/skin/template.pt:168
-msgid "You are logged in as ${user_title}."
+#: src/bugtracker/browser/skin/dialog_macros.pt:10
+msgid "Zope 3 Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/browser/skin/template.pt:231
+#: src/bugtracker/browser/skin/dialog_macros.pt:103
+#: src/bugtracker/browser/skin/template.pt:230
 msgid "Powered by Zope 3. Written by Stephan Richter in 2003."
 msgstr ""
 
+#: src/bugtracker/browser/skin/template.pt:155
+msgid "Logout"
+msgstr ""
+
+#: src/bugtracker/browser/skin/template.pt:160
+msgid "Login"
+msgstr ""
+
+#: src/bugtracker/browser/skin/template.pt:167
+msgid "You are logged in as ${user_title}."
+msgstr ""
+
+#: src/bugtracker/browser/skin/template.pt:204
+msgid "Tip"
+msgstr ""
+
 #: src/bugtracker/browser/skin/template.pt:92
 msgid "&nbsp;Bug Tracker"
 msgstr ""
@@ -247,15 +279,38 @@
 msgstr ""
 
 #: src/bugtracker/browser/subscriptions.pt:37
+#: src/bugtracker/browser/bug_edit.pt:75
+#: src/bugtracker/browser/bug_add.pt:69
 # Default: "Refresh"
 msgid "refresh-button"
 msgstr ""
 
 #: src/bugtracker/browser/subscriptions.pt:39
+#: src/bugtracker/browser/tracker_settings.pt:39
 # Default: "Add"
 msgid "add-button"
 msgstr ""
 
+#: src/bugtracker/browser/tracker.py:187
+#: src/bugtracker/interfaces.py:78
+msgid "Status"
+msgstr ""
+
+#: src/bugtracker/browser/tracker.py:188
+#: src/bugtracker/interfaces.py:92
+msgid "Type"
+msgstr ""
+
+#: src/bugtracker/browser/tracker.py:190
+#: src/bugtracker/interfaces.py:85
+msgid "Priority"
+msgstr ""
+
+#: src/bugtracker/browser/tracker.py:191
+#: src/bugtracker/interfaces.py:106
+msgid "Owners"
+msgstr ""
+
 #: src/bugtracker/browser/tracker.py:50
 #: src/bugtracker/browser/legend.pt:3
 msgid "New"
@@ -282,8 +337,8 @@
 msgstr ""
 
 #: src/bugtracker/browser/tracker.py:56
-#: src/bugtracker/configure.zcml:233
-#: src/bugtracker/browser/configure.zcml:134
+#: src/bugtracker/configure.zcml:245
+#: src/bugtracker/browser/configure.zcml:136
 msgid "Bug"
 msgstr ""
 
@@ -292,6 +347,7 @@
 msgstr ""
 
 #: src/bugtracker/browser/tracker.py:58
+#: src/bugtracker/browser/tracker.py:189
 #: src/bugtracker/interfaces.py:99
 msgid "Release"
 msgstr ""
@@ -319,35 +375,91 @@
 msgid "Critical"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_overview.pt:106
-#: src/bugtracker/browser/tracker_overview.pt:146
+#: src/bugtracker/browser/tracker_add.pt:13
+msgid "Create Initial Vocabulary Entries"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_add.pt:15
+msgid "To make your life easier, when this option is selected, it creates vocabulary entries for the status, release, priority and type fields of a bug. This will save you some time with the setup."
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:107
+#: src/bugtracker/browser/tracker_overview.pt:147
 msgid "Previous (${start_number} to ${end_number})"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_overview.pt:113
-#: src/bugtracker/browser/tracker_overview.pt:153
+#: src/bugtracker/browser/tracker_overview.pt:114
+#: src/bugtracker/browser/tracker_overview.pt:154
 msgid "${start_number} to ${end_number} of ${batch_total_number} found (${bug_number} total)"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_overview.pt:123
-#: src/bugtracker/browser/tracker_overview.pt:163
+#: src/bugtracker/browser/tracker_overview.pt:124
+#: src/bugtracker/browser/tracker_overview.pt:164
 msgid "Next (${start_number} to ${end_number})"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_overview.pt:92
-#: src/bugtracker/browser/tracker_overview.pt:171
+#: src/bugtracker/browser/tracker_overview.pt:16
+msgid "Filter Options"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:25
+msgid "Filter Text"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:31
+msgid "View Type"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:70
+# Default: "Apply Filter/Changes"
+msgid "save-filter-changes-button"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:75
+#: src/bugtracker/browser/dependencies.pt:91
+# Default: "Collapse"
+msgid "collapse-button"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:79
+#: src/bugtracker/browser/dependencies.pt:95
+# Default: "Expand"
+msgid "expand-button"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_overview.pt:93
+#: src/bugtracker/browser/tracker_overview.pt:172
 # Default: "Add Bug"
 msgid "add-bug-button"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_settings.pt:14
+#: src/bugtracker/browser/tracker_settings.pt:15
 msgid "Existing Values:"
 msgstr ""
 
-#: src/bugtracker/browser/tracker_settings.pt:29
+#: src/bugtracker/browser/tracker_settings.pt:25
+# Default: "Delete"
+msgid "delete-button"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_settings.pt:27
+# Default: "Set Default"
+msgid "set-default-button"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_settings.pt:30
 msgid "Default Value:"
 msgstr ""
 
+#: src/bugtracker/browser/tracker_settings.pt:35
+msgid "Value:"
+msgstr ""
+
+#: src/bugtracker/browser/tracker_settings.pt:37
+#: src/bugtracker/browser/bug_add.pt:27
+msgid "Title:"
+msgstr ""
+
 #: src/bugtracker/bug.py:45
 #: src/bugtracker/bug.py:46
 msgid "Stati"
@@ -368,108 +480,108 @@
 msgid "Releases"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:11
+#: src/bugtracker/configure.zcml:13
 msgid "Bug Tracker User"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:11
+#: src/bugtracker/configure.zcml:13
 msgid "The user can browse the bug tracker"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:16
-msgid "Bug Tracker Editor"
+#: src/bugtracker/configure.zcml:172
+#: src/bugtracker/browser/configure.zcml:41
+msgid "A Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:16
-msgid "The Bug Tracker editor can add and edit bugs."
+#: src/bugtracker/configure.zcml:172
+#: src/bugtracker/browser/configure.zcml:41
+msgid "Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:165
-#: src/bugtracker/browser/configure.zcml:39
-msgid "A Bug Tracker"
+#: src/bugtracker/configure.zcml:18
+msgid "Bug Tracker Editor"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:165
-#: src/bugtracker/browser/configure.zcml:39
-msgid "Bug Tracker"
+#: src/bugtracker/configure.zcml:18
+msgid "The Bug Tracker editor can add and edit bugs."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:21
+#: src/bugtracker/configure.zcml:23
 msgid "The Admin can fully manage a bug tracker."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:21
+#: src/bugtracker/configure.zcml:23
 msgid "Bug Tracker Administrator"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:233
-#: src/bugtracker/browser/configure.zcml:134
+#: src/bugtracker/configure.zcml:245
+#: src/bugtracker/browser/configure.zcml:136
 msgid "A Bug"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:26
+#: src/bugtracker/configure.zcml:28
 msgid "Manage Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:26
+#: src/bugtracker/configure.zcml:28
 msgid "Allows to change the settings of the Bug Tracker."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:311
+#: src/bugtracker/configure.zcml:325
 msgid "Comment"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:311
+#: src/bugtracker/configure.zcml:325
 msgid "A comment about the bug."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:35
+#: src/bugtracker/configure.zcml:37
 msgid "Allows to view the overview of the Bug Tracker."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:35
+#: src/bugtracker/configure.zcml:37
 msgid "View Bug Tracker"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:44
+#: src/bugtracker/configure.zcml:46
 msgid "View Bug"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:44
+#: src/bugtracker/configure.zcml:46
 msgid "Allows to view the overview and dependencies of the Bug."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:53
+#: src/bugtracker/configure.zcml:55
 msgid "Allows to add a Bug to the Tracker."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:53
-#: src/bugtracker/browser/configure.zcml:109
-#: src/bugtracker/browser/bug_overview.pt:73
+#: src/bugtracker/configure.zcml:55
+#: src/bugtracker/browser/configure.zcml:111
+#: src/bugtracker/browser/bug_overview.pt:74
 msgid "Add Bug"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:62
+#: src/bugtracker/configure.zcml:64
 msgid "Allows to edit the data of a Bug."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:62
+#: src/bugtracker/configure.zcml:64
 msgid "Edit Bug"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:71
+#: src/bugtracker/configure.zcml:73
 msgid "Allows to add comments to a bug."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:71
+#: src/bugtracker/configure.zcml:73
 msgid "Add Bug Comment"
 msgstr ""
 
-#: src/bugtracker/configure.zcml:80
+#: src/bugtracker/configure.zcml:82
 msgid "Allows to add attachments (files and images)  to a bug."
 msgstr ""
 
-#: src/bugtracker/configure.zcml:80
+#: src/bugtracker/configure.zcml:82
 msgid "Add Bug Attachment"
 msgstr ""
 
@@ -477,16 +589,12 @@
 msgid "Defines the release for which the bug is scheduled."
 msgstr ""
 
-#: src/bugtracker/interfaces.py:106
-msgid "Owners"
-msgstr ""
-
 #: src/bugtracker/interfaces.py:107
 msgid "List of people assigned as owners of the bug."
 msgstr ""
 
 #: src/bugtracker/interfaces.py:139
-#: src/bugtracker/browser/configure.zcml:211
+#: src/bugtracker/browser/configure.zcml:213
 #: src/bugtracker/browser/dependencies.pt:59
 #: src/bugtracker/browser/dependencies.pt:65
 msgid "Dependencies"
@@ -546,6 +654,9 @@
 msgstr ""
 
 #: src/bugtracker/interfaces.py:68
+#: src/bugtracker/browser/bug_overview.pt:60
+#: src/bugtracker/browser/bug_edit.pt:70
+#: src/bugtracker/browser/bug_add.pt:57
 msgid "Description"
 msgstr ""
 
@@ -561,51 +672,39 @@
 msgid "Name of the person that submitted the bug."
 msgstr ""
 
-#: src/bugtracker/interfaces.py:78
-msgid "Status"
-msgstr ""
-
 #: src/bugtracker/interfaces.py:79
 msgid "The current status of the bug."
 msgstr ""
 
-#: src/bugtracker/interfaces.py:85
-msgid "Priority"
-msgstr ""
-
 #: src/bugtracker/interfaces.py:86
 msgid "Specifies how urgent this bug is."
 msgstr ""
 
-#: src/bugtracker/interfaces.py:92
-msgid "Type"
-msgstr ""
-
 #: src/bugtracker/interfaces.py:93
 msgid "Specifies of what nature the bug is."
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:120
+#: src/bugtracker/vocabulary.py:101
+msgid "Cannot delete default value '${value}'."
+msgstr ""
+
+#: src/bugtracker/vocabulary.py:124
 msgid "The value '${value}' was not found in the vocabulary"
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:136
+#: src/bugtracker/vocabulary.py:140
 msgid "Status Definitions"
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:146
+#: src/bugtracker/vocabulary.py:150
 msgid "Release Definitions"
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:156
+#: src/bugtracker/vocabulary.py:160
 msgid "Priority Definitions"
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:166
+#: src/bugtracker/vocabulary.py:170
 msgid "Bug Type Definitions"
 msgstr ""
 
-#: src/bugtracker/vocabulary.py:97
-msgid "Cannot delete default value '${value}'."
-msgstr ""
-

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.mo
===================================================================
(Binary files differ)

Modified: Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/bugtracker/locales/ru/LC_MESSAGES/bugtracker.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,5 +1,5 @@
 # translation of bugtracker.po to Russian
-##############################################################################
+# #############################################################################
 #
 # Copyright (c) 2003-2004 Zope Corporation and Contributors.
 # All Rights Reserved.
@@ -11,12 +11,12 @@
 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
 # FOR A PARTICULAR PURPOSE.
 #
-##############################################################################
+# #############################################################################
 # Dmitry Vasiliev <dima at hlabs.spb.ru>, 2004
 msgid ""
 msgstr ""
 "Project-Id-Version: Development/Revision: 27349\n"
-"POT-Creation-Date: Mon Aug 30 17:09:39 2004\n"
+"POT-Creation-Date: Wed Apr 20 18:16:40 2005\n"
 "PO-Revision-Date: 2004-08-30 18:03+0000\n"
 "Last-Translator: Dmitry Vasiliev <dima at hlabs.spb.ru>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -26,118 +26,136 @@
 "Generated-By: zope/app/locales/extract.py\n"
 "X-Generator: KBabel 1.0\n"
 
+#: src/bugtracker/browser/bug_edit.pt:24 src/bugtracker/browser/bug_add.pt:19
+msgid "There are ${num_errors} input errors."
+msgstr "Найдено ${num_errors} ошибок ввода."
+
+# Default: "Import"
+#: src/bugtracker/browser/bug_edit.pt:77 src/bugtracker/browser/bug_add.pt:71
+msgid "submit-button"
+msgstr "Загрузить"
+
 #: src/bugtracker/browser/bug_listing_normal.pt:10
 msgid "Bug #${bug_id} - ${bug_title}"
-msgstr ""
+msgstr "Баг #${bug_id} - ${bug_title}"
 
 #: src/bugtracker/browser/bug_listing_normal.pt:18
-#: src/bugtracker/browser/bug_edit.pt:42
+#: src/bugtracker/browser/bug_edit.pt:43 src/bugtracker/browser/bug_add.pt:35
 msgid "Status:"
 msgstr "Статус:"
 
 #: src/bugtracker/browser/bug_listing_normal.pt:24
-#: src/bugtracker/browser/bug_edit.pt:39
+#: src/bugtracker/browser/bug_edit.pt:40 src/bugtracker/browser/bug_add.pt:32
 msgid "Type:"
 msgstr "Тип:"
 
 #: src/bugtracker/browser/bug_listing_normal.pt:37
 msgid "Posted by ${submitter} on ${created_date} - ${num_comments} comments"
-msgstr ""
+msgstr "Добавлено ${submitter}, ${created_date}, коментариев: ${num_comments}"
 
-#: src/bugtracker/browser/bug_overview.pt:17
-#: src/bugtracker/browser/bug_edit.pt:33
+#: src/bugtracker/browser/bug_overview.pt:18
+#: src/bugtracker/browser/bug_edit.pt:34
 msgid "From ${user} at ${date}"
-msgstr "От ${user} на ${date}"
+msgstr "От ${user}, ${date}"
 
-#: src/bugtracker/browser/bug_overview.pt:33
+#: src/bugtracker/browser/bug_overview.pt:34
 #: src/bugtracker/browser/bug_listing_normal.pt:21
-#: src/bugtracker/browser/bug_edit.pt:48
+#: src/bugtracker/browser/bug_edit.pt:49 src/bugtracker/browser/bug_add.pt:41
 msgid "Priority:"
 msgstr "Приоритет:"
 
-#: src/bugtracker/browser/bug_overview.pt:38
-#: src/bugtracker/browser/bug_edit.pt:51
+#: src/bugtracker/browser/bug_overview.pt:39
+#: src/bugtracker/browser/bug_edit.pt:52 src/bugtracker/browser/bug_add.pt:44
 msgid "Release Target:"
-msgstr ""
+msgstr "Релиз:"
 
-#: src/bugtracker/browser/bug_overview.pt:43
-#: src/bugtracker/browser/bug_edit.pt:57
+#: src/bugtracker/browser/bug_overview.pt:44
+#: src/bugtracker/browser/bug_edit.pt:58 src/bugtracker/browser/bug_add.pt:50
 msgid "Owners:"
 msgstr "Владельцы:"
 
-#: src/bugtracker/browser/bug_overview.pt:63
+#: src/bugtracker/browser/bug_overview.pt:54
+#: src/bugtracker/browser/bug_edit.pt:64
+msgid "Last modified:"
+msgstr "Последнее изменение:"
+
+#: src/bugtracker/browser/bug_overview.pt:64
 msgid "Direct Dependencies"
 msgstr "Прямые зависимости"
 
-#: src/bugtracker/browser/bug_overview.pt:77
+#: src/bugtracker/browser/bug_overview.pt:78
 msgid "Attachments"
 msgstr "Присоединенные файлы"
 
-#: src/bugtracker/browser/bug_overview.pt:86
+#: src/bugtracker/browser/bug_overview.pt:87
 msgid "Add File"
 msgstr "Добавить файл"
 
-#: src/bugtracker/browser/bug_overview.pt:88
+#: src/bugtracker/browser/bug_overview.pt:89
 msgid "Add Image"
 msgstr "Добавить изображение"
 
-#: src/bugtracker/browser/bug_overview.pt:92
+#: src/bugtracker/browser/bug_overview.pt:93
 msgid "Comments"
 msgstr "Комментарии"
 
-#: src/bugtracker/browser/configure.zcml:142
+#: src/bugtracker/browser/bug_overview.pt:98
+msgid "Entry #${bug_id} by ${creator} on ${modified_datetime}"
+msgstr "Запись #${bug_id} создана ${creator}, ${modified_datetime}"
+
+#: src/bugtracker/browser/configure.zcml:144
 msgid "Add Dependent Bug"
-msgstr ""
+msgstr "Добавить зависимый баг"
 
-#: src/bugtracker/browser/configure.zcml:173
+#: src/bugtracker/browser/configure.zcml:175
 msgid "Change Bug"
-msgstr ""
+msgstr "Изменить баг"
 
-#: src/bugtracker/browser/configure.zcml:173
-#: src/bugtracker/browser/configure.zcml:260
+#: src/bugtracker/browser/configure.zcml:175
+#: src/bugtracker/browser/configure.zcml:262
 msgid "Edit"
 msgstr "Редактировать"
 
-#: src/bugtracker/browser/configure.zcml:236
-#: src/bugtracker/browser/bug_overview.pt:103
+#: src/bugtracker/browser/configure.zcml:238
+#: src/bugtracker/browser/bug_overview.pt:104
 msgid "Add Comment"
 msgstr "Добавить комментарий"
 
-#: src/bugtracker/browser/configure.zcml:252
+#: src/bugtracker/browser/configure.zcml:254
 msgid "Bug Comment"
-msgstr ""
+msgstr "Коментарий бага"
 
-#: src/bugtracker/browser/configure.zcml:252
+#: src/bugtracker/browser/configure.zcml:254
 msgid "A Comment"
 msgstr "Комментарий"
 
-#: src/bugtracker/browser/configure.zcml:260
+#: src/bugtracker/browser/configure.zcml:262
 msgid "Change Comment"
 msgstr "Изменить комментарий"
 
-#: src/bugtracker/browser/configure.zcml:29
+#: src/bugtracker/browser/configure.zcml:31
 msgid "Add Bug Tracker"
-msgstr ""
+msgstr "Трекер багов"
 
-#: src/bugtracker/browser/configure.zcml:58
-#: src/bugtracker/browser/configure.zcml:203
+#: src/bugtracker/browser/configure.zcml:60
+#: src/bugtracker/browser/configure.zcml:205
 msgid "Overview"
-msgstr ""
+msgstr "Краткое описание"
 
-#: src/bugtracker/browser/configure.zcml:64
+#: src/bugtracker/browser/configure.zcml:66
 msgid "Bug Tracker - Overview"
-msgstr ""
+msgstr "Краткое описание трекера"
 
-#: src/bugtracker/browser/configure.zcml:77
+#: src/bugtracker/browser/configure.zcml:79
 msgid "Settings"
 msgstr "Установки"
 
-#: src/bugtracker/browser/configure.zcml:84
-#: src/bugtracker/browser/configure.zcml:216
+#: src/bugtracker/browser/configure.zcml:86
+#: src/bugtracker/browser/configure.zcml:218
 msgid "Subscriptions"
 msgstr "Подписки"
 
-#: src/bugtracker/browser/configure.zcml:96
+#: src/bugtracker/browser/configure.zcml:98
 msgid "XML Export/Import"
 msgstr "Загрузка/Сохранение XML"
 
@@ -147,49 +165,46 @@
 
 #: src/bugtracker/browser/dependencies.pt:112
 msgid "Closed/Deferred Bugs:"
-msgstr ""
+msgstr "Закрытые/отложенные баги:"
 
 #: src/bugtracker/browser/dependencies.pt:120
 msgid "New (unseen) Bugs:"
-msgstr ""
+msgstr "Новые (не просмотренные) баги:"
 
 #: src/bugtracker/browser/dependencies.pt:128
 msgid "Opened/Assigned Bugs:"
-msgstr ""
+msgstr "Открытые/назначенные баги:"
 
 #: src/bugtracker/browser/dependencies.pt:137
 msgid "Dependency Tree"
 msgstr "Дерево зависимостей"
 
 #: src/bugtracker/browser/dependencies.pt:25
-msgid "Dependencies - Bugs that have to be completed before this bug can be closed."
+msgid ""
+"Dependencies - Bugs that have to be completed before this bug can be closed."
 msgstr ""
+"Зависимости - баги которые должны быть разобраны перед тем как данный баг "
+"может быть закрыт."
 
 #: src/bugtracker/browser/dependencies.pt:27
-msgid "Dependents - This bug has to be completed in before the Dependents can be closed."
+msgid ""
+"Dependents - This bug has to be completed in before the Dependents can be "
+"closed."
 msgstr ""
+"Зависимые - этот баг должен быть разобран перед тем как зависимые могут быть "
+"закрыты."
 
 #: src/bugtracker/browser/dependencies.pt:40
 msgid "Available Bugs"
-msgstr ""
+msgstr "Доступные баги"
 
-#: src/bugtracker/browser/dependencies.pt:91
-# Default: "Collapse"
-msgid "collapse-button"
-msgstr "Свернуть"
-
-#: src/bugtracker/browser/dependencies.pt:95
-# Default: "Expand"
-msgid "expand-button"
-msgstr "Развернуть"
-
 #: src/bugtracker/browser/exportimport.pt:14
 msgid "Export XML"
-msgstr "Сохранить XML"
+msgstr "Сохранение XML"
 
 #: src/bugtracker/browser/exportimport.pt:16
 msgid "Simply click <a href=\"./tracker.xml\">here</a>."
-msgstr ""
+msgstr "Скачать <a href=\"./tracker.xml\">здесь</a>."
 
 #: src/bugtracker/browser/exportimport.pt:18
 msgid "Import XML"
@@ -199,22 +214,22 @@
 msgid "XML File"
 msgstr "XML файл"
 
+# Default: "Import"
 #: src/bugtracker/browser/exportimport.pt:29
-# Default: "Import"
 msgid "import-button"
 msgstr "Загрузить"
 
 #: src/bugtracker/browser/legend.pt:13
 msgid "Critial"
-msgstr ""
+msgstr "Критический"
 
 #: src/bugtracker/browser/legend.pt:2
 msgid "Status Markup"
-msgstr ""
+msgstr "Отметка статуса"
 
 #: src/bugtracker/browser/legend.pt:9
 msgid "Priority Markup"
-msgstr ""
+msgstr "Отметка приоритета"
 
 #: src/bugtracker/browser/mail.py:31
 msgid "Subscribers successfully added: $emails"
@@ -224,272 +239,350 @@
 msgid "Subscribers successfully deleted: $emails"
 msgstr "Подписчики успешно удалены: $emails"
 
-#: src/bugtracker/browser/skin/template.pt:168
-msgid "You are logged in as ${user_title}."
-msgstr ""
+#: src/bugtracker/browser/skin/dialog_macros.pt:10
+msgid "Zope 3 Bug Tracker"
+msgstr "Трекер багов"
 
-#: src/bugtracker/browser/skin/template.pt:231
+#: src/bugtracker/browser/skin/dialog_macros.pt:103
+#: src/bugtracker/browser/skin/template.pt:230
 msgid "Powered by Zope 3. Written by Stephan Richter in 2003."
 msgstr ""
 
+#: src/bugtracker/browser/skin/template.pt:155
+msgid "Logout"
+msgstr "Выйти"
+
+#: src/bugtracker/browser/skin/template.pt:160
+msgid "Login"
+msgstr "Войти"
+
+#: src/bugtracker/browser/skin/template.pt:167
+msgid "You are logged in as ${user_title}."
+msgstr "Вы зарегистрированы в системе как ${user_title}."
+
+#: src/bugtracker/browser/skin/template.pt:204
+msgid "Tip"
+msgstr "Намек"
+
 #: src/bugtracker/browser/skin/template.pt:92
 msgid "&nbsp;Bug Tracker"
-msgstr ""
+msgstr "&nbsp;Трекер багов"
 
 #: src/bugtracker/browser/subscriptions.pt:12
 msgid "Current Subscriptions"
 msgstr "Текущие подписки"
 
+# Default: "Remove"
 #: src/bugtracker/browser/subscriptions.pt:20
-# Default: "Remove"
 msgid "remove-button"
 msgstr "Удалить"
 
 #: src/bugtracker/browser/subscriptions.pt:27
 msgid "Enter new Users (separate by 'Return')"
-msgstr ""
+msgstr "Введите новых пользователей (разделяя переводом строки)"
 
+# Default: "Refresh"
 #: src/bugtracker/browser/subscriptions.pt:37
-# Default: "Refresh"
+#: src/bugtracker/browser/bug_edit.pt:75 src/bugtracker/browser/bug_add.pt:69
 msgid "refresh-button"
 msgstr "Обновить"
 
+# Default: "Add"
 #: src/bugtracker/browser/subscriptions.pt:39
-# Default: "Add"
+#: src/bugtracker/browser/tracker_settings.pt:39
 msgid "add-button"
 msgstr "Добавить"
 
-#: src/bugtracker/browser/tracker.py:50
-#: src/bugtracker/browser/legend.pt:3
+#: src/bugtracker/browser/tracker.py:187 src/bugtracker/interfaces.py:78
+msgid "Status"
+msgstr "Статус"
+
+#: src/bugtracker/browser/tracker.py:188 src/bugtracker/interfaces.py:92
+msgid "Type"
+msgstr "Тип"
+
+#: src/bugtracker/browser/tracker.py:190 src/bugtracker/interfaces.py:85
+msgid "Priority"
+msgstr "Приоритет"
+
+#: src/bugtracker/browser/tracker.py:191 src/bugtracker/interfaces.py:106
+msgid "Owners"
+msgstr "Владельцы"
+
+#: src/bugtracker/browser/tracker.py:50 src/bugtracker/browser/legend.pt:3
 msgid "New"
 msgstr "Новый"
 
-#: src/bugtracker/browser/tracker.py:51
-#: src/bugtracker/browser/legend.pt:4
+#: src/bugtracker/browser/tracker.py:51 src/bugtracker/browser/legend.pt:4
 msgid "Open"
 msgstr "Открытый"
 
-#: src/bugtracker/browser/tracker.py:52
-#: src/bugtracker/browser/legend.pt:5
+#: src/bugtracker/browser/tracker.py:52 src/bugtracker/browser/legend.pt:5
 msgid "Assigned"
-msgstr ""
+msgstr "Связанный"
 
-#: src/bugtracker/browser/tracker.py:53
-#: src/bugtracker/browser/legend.pt:6
+#: src/bugtracker/browser/tracker.py:53 src/bugtracker/browser/legend.pt:6
 msgid "Deferred"
-msgstr ""
+msgstr "Отложенный"
 
-#: src/bugtracker/browser/tracker.py:54
-#: src/bugtracker/browser/legend.pt:7
+#: src/bugtracker/browser/tracker.py:54 src/bugtracker/browser/legend.pt:7
 msgid "Closed"
 msgstr "Закрытый"
 
-#: src/bugtracker/browser/tracker.py:56
-#: src/bugtracker/configure.zcml:233
-#: src/bugtracker/browser/configure.zcml:134
+#: src/bugtracker/browser/tracker.py:56 src/bugtracker/configure.zcml:245
+#: src/bugtracker/browser/configure.zcml:136
 msgid "Bug"
-msgstr ""
+msgstr "Баг"
 
 #: src/bugtracker/browser/tracker.py:57
 msgid "Feature"
-msgstr ""
+msgstr "Особенность"
 
-#: src/bugtracker/browser/tracker.py:58
+#: src/bugtracker/browser/tracker.py:58 src/bugtracker/browser/tracker.py:189
 #: src/bugtracker/interfaces.py:99
 msgid "Release"
-msgstr ""
+msgstr "Релиз"
 
 #: src/bugtracker/browser/tracker.py:60
 msgid "(not specified)"
-msgstr ""
+msgstr "(не определено)"
 
-#: src/bugtracker/browser/tracker.py:62
-#: src/bugtracker/browser/legend.pt:10
+#: src/bugtracker/browser/tracker.py:62 src/bugtracker/browser/legend.pt:10
 msgid "Low"
-msgstr ""
+msgstr "Низкий"
 
-#: src/bugtracker/browser/tracker.py:63
-#: src/bugtracker/browser/legend.pt:11
+#: src/bugtracker/browser/tracker.py:63 src/bugtracker/browser/legend.pt:11
 msgid "Normal"
-msgstr ""
+msgstr "Обычный"
 
-#: src/bugtracker/browser/tracker.py:64
-#: src/bugtracker/browser/legend.pt:12
+#: src/bugtracker/browser/tracker.py:64 src/bugtracker/browser/legend.pt:12
 msgid "Urgent"
-msgstr ""
+msgstr "Срочный"
 
 #: src/bugtracker/browser/tracker.py:65
 msgid "Critical"
+msgstr "Критический"
+
+#: src/bugtracker/browser/tracker_add.pt:13
+msgid "Create Initial Vocabulary Entries"
+msgstr "Создать стандартные записи"
+
+#: src/bugtracker/browser/tracker_add.pt:15
+msgid ""
+"To make your life easier, when this option is selected, it creates "
+"vocabulary entries for the status, release, priority and type fields of a "
+"bug. This will save you some time with the setup."
 msgstr ""
+"Для упрощения настройки, когда данная опция выбрана, будут созданы "
+"стандартные записи для полей статуса, релиза, приоритета и типа багов."
 
-#: src/bugtracker/browser/tracker_overview.pt:106
-#: src/bugtracker/browser/tracker_overview.pt:146
+#: src/bugtracker/browser/tracker_overview.pt:107
+#: src/bugtracker/browser/tracker_overview.pt:147
 msgid "Previous (${start_number} to ${end_number})"
-msgstr ""
+msgstr "Предыдущий (${start_number} до ${end_number})"
 
-#: src/bugtracker/browser/tracker_overview.pt:113
-#: src/bugtracker/browser/tracker_overview.pt:153
-msgid "${start_number} to ${end_number} of ${batch_total_number} found (${bug_number} total)"
+#: src/bugtracker/browser/tracker_overview.pt:114
+#: src/bugtracker/browser/tracker_overview.pt:154
+msgid ""
+"${start_number} to ${end_number} of ${batch_total_number} found "
+"(${bug_number} total)"
 msgstr ""
+"${start_number} до ${end_number} из ${batch_total_number} найденных "
+"(${bug_number} всего)"
 
-#: src/bugtracker/browser/tracker_overview.pt:123
-#: src/bugtracker/browser/tracker_overview.pt:163
+#: src/bugtracker/browser/tracker_overview.pt:124
+#: src/bugtracker/browser/tracker_overview.pt:164
 msgid "Next (${start_number} to ${end_number})"
-msgstr ""
+msgstr "Следующий (${start_number} до ${end_number})"
 
-#: src/bugtracker/browser/tracker_overview.pt:92
-#: src/bugtracker/browser/tracker_overview.pt:171
+#: src/bugtracker/browser/tracker_overview.pt:16
+msgid "Filter Options"
+msgstr "Опции фильтрации"
+
+#: src/bugtracker/browser/tracker_overview.pt:25
+msgid "Filter Text"
+msgstr "Текст для фильтрации"
+
+#: src/bugtracker/browser/tracker_overview.pt:31
+msgid "View Type"
+msgstr "Тип просмотра"
+
+# Default: "Refresh"
+#: src/bugtracker/browser/tracker_overview.pt:70
+msgid "save-filter-changes-button"
+msgstr "Обновить"
+
+# Default: "Collapse"
+#: src/bugtracker/browser/tracker_overview.pt:75
+#: src/bugtracker/browser/dependencies.pt:91
+msgid "collapse-button"
+msgstr "Свернуть"
+
+# Default: "Expand"
+#: src/bugtracker/browser/tracker_overview.pt:79
+#: src/bugtracker/browser/dependencies.pt:95
+msgid "expand-button"
+msgstr "Развернуть"
+
 # Default: "Add Bug"
+#: src/bugtracker/browser/tracker_overview.pt:93
+#: src/bugtracker/browser/tracker_overview.pt:172
 msgid "add-bug-button"
-msgstr ""
+msgstr "Добавить баг"
 
-#: src/bugtracker/browser/tracker_settings.pt:14
+#: src/bugtracker/browser/tracker_settings.pt:15
 msgid "Existing Values:"
-msgstr ""
+msgstr "Существующие значения:"
 
-#: src/bugtracker/browser/tracker_settings.pt:29
+# Default: "Add"
+#: src/bugtracker/browser/tracker_settings.pt:25
+msgid "delete-button"
+msgstr "Добавить"
+
+# Default: "Set Default"
+#: src/bugtracker/browser/tracker_settings.pt:27
+msgid "set-default-button"
+msgstr "Установить по умолчанию"
+
+#: src/bugtracker/browser/tracker_settings.pt:30
 msgid "Default Value:"
-msgstr ""
+msgstr "Значение по умолчанию:"
 
-#: src/bugtracker/bug.py:45
-#: src/bugtracker/bug.py:46
+#: src/bugtracker/browser/tracker_settings.pt:35
+msgid "Value:"
+msgstr "Значение:"
+
+#: src/bugtracker/browser/tracker_settings.pt:37
+#: src/bugtracker/browser/bug_add.pt:27
+msgid "Title:"
+msgstr "Заголовок:"
+
+#: src/bugtracker/bug.py:45 src/bugtracker/bug.py:46
 msgid "Stati"
-msgstr ""
+msgstr "Статус"
 
-#: src/bugtracker/bug.py:50
-#: src/bugtracker/bug.py:51
+#: src/bugtracker/bug.py:50 src/bugtracker/bug.py:51
 msgid "Priorities"
 msgstr "Приоритеты"
 
-#: src/bugtracker/bug.py:55
-#: src/bugtracker/bug.py:56
+#: src/bugtracker/bug.py:55 src/bugtracker/bug.py:56
 msgid "BugTypes"
-msgstr ""
+msgstr "Типы багов"
 
-#: src/bugtracker/bug.py:60
-#: src/bugtracker/bug.py:61
+#: src/bugtracker/bug.py:60 src/bugtracker/bug.py:61
 msgid "Releases"
-msgstr ""
+msgstr "Релизы"
 
-#: src/bugtracker/configure.zcml:11
+#: src/bugtracker/configure.zcml:13
 msgid "Bug Tracker User"
-msgstr ""
+msgstr "Пользователь трекера"
 
-#: src/bugtracker/configure.zcml:11
+#: src/bugtracker/configure.zcml:13
 msgid "The user can browse the bug tracker"
-msgstr ""
+msgstr "Данный пользователь может просматривать баги"
 
-#: src/bugtracker/configure.zcml:16
+#: src/bugtracker/configure.zcml:172 src/bugtracker/browser/configure.zcml:41
+msgid "A Bug Tracker"
+msgstr "Трекер багов"
+
+#: src/bugtracker/configure.zcml:172 src/bugtracker/browser/configure.zcml:41
+msgid "Bug Tracker"
+msgstr "Трекер багов"
+
+#: src/bugtracker/configure.zcml:18
 msgid "Bug Tracker Editor"
-msgstr ""
+msgstr "Редактор трекера багов"
 
-#: src/bugtracker/configure.zcml:16
+#: src/bugtracker/configure.zcml:18
 msgid "The Bug Tracker editor can add and edit bugs."
-msgstr ""
+msgstr "Редактор трекера багов может добавлять и редактировать баги."
 
-#: src/bugtracker/configure.zcml:165
-#: src/bugtracker/browser/configure.zcml:39
-msgid "A Bug Tracker"
-msgstr ""
-
-#: src/bugtracker/configure.zcml:165
-#: src/bugtracker/browser/configure.zcml:39
-msgid "Bug Tracker"
-msgstr ""
-
-#: src/bugtracker/configure.zcml:21
+#: src/bugtracker/configure.zcml:23
 msgid "The Admin can fully manage a bug tracker."
-msgstr ""
+msgstr "Администратор может полностью управлять трекером."
 
-#: src/bugtracker/configure.zcml:21
+#: src/bugtracker/configure.zcml:23
 msgid "Bug Tracker Administrator"
-msgstr ""
+msgstr "Администратор трекера багов"
 
-#: src/bugtracker/configure.zcml:233
-#: src/bugtracker/browser/configure.zcml:134
+#: src/bugtracker/configure.zcml:245 src/bugtracker/browser/configure.zcml:136
 msgid "A Bug"
-msgstr ""
+msgstr "Баг"
 
-#: src/bugtracker/configure.zcml:26
+#: src/bugtracker/configure.zcml:28
 msgid "Manage Bug Tracker"
-msgstr ""
+msgstr "Управление трекером багов"
 
-#: src/bugtracker/configure.zcml:26
+#: src/bugtracker/configure.zcml:28
 msgid "Allows to change the settings of the Bug Tracker."
-msgstr ""
+msgstr "Позволяет изменять настройки трекера багов."
 
-#: src/bugtracker/configure.zcml:311
+#: src/bugtracker/configure.zcml:325
 msgid "Comment"
 msgstr "Комментарий"
 
-#: src/bugtracker/configure.zcml:311
+#: src/bugtracker/configure.zcml:325
 msgid "A comment about the bug."
-msgstr ""
+msgstr "Коментарий насчет бага."
 
-#: src/bugtracker/configure.zcml:35
+#: src/bugtracker/configure.zcml:37
 msgid "Allows to view the overview of the Bug Tracker."
-msgstr ""
+msgstr "Позволяет просматривать трекер багов."
 
-#: src/bugtracker/configure.zcml:35
+#: src/bugtracker/configure.zcml:37
 msgid "View Bug Tracker"
-msgstr ""
+msgstr "Просмотр трекера багов"
 
-#: src/bugtracker/configure.zcml:44
+#: src/bugtracker/configure.zcml:46
 msgid "View Bug"
-msgstr ""
+msgstr "Просмотр бага"
 
-#: src/bugtracker/configure.zcml:44
+#: src/bugtracker/configure.zcml:46
 msgid "Allows to view the overview and dependencies of the Bug."
-msgstr ""
+msgstr "Позволяет просматривать баг и его зависимости."
 
-#: src/bugtracker/configure.zcml:53
+#: src/bugtracker/configure.zcml:55
 msgid "Allows to add a Bug to the Tracker."
-msgstr ""
+msgstr "Позволяет добавлять баги к трекеру."
 
-#: src/bugtracker/configure.zcml:53
-#: src/bugtracker/browser/configure.zcml:109
-#: src/bugtracker/browser/bug_overview.pt:73
+#: src/bugtracker/configure.zcml:55 src/bugtracker/browser/configure.zcml:111
+#: src/bugtracker/browser/bug_overview.pt:74
 msgid "Add Bug"
-msgstr ""
+msgstr "Добавление бага"
 
-#: src/bugtracker/configure.zcml:62
+#: src/bugtracker/configure.zcml:64
 msgid "Allows to edit the data of a Bug."
-msgstr ""
+msgstr "Позволяет редактировать данные бага."
 
-#: src/bugtracker/configure.zcml:62
+#: src/bugtracker/configure.zcml:64
 msgid "Edit Bug"
-msgstr ""
+msgstr "Редактирование бага"
 
-#: src/bugtracker/configure.zcml:71
+#: src/bugtracker/configure.zcml:73
 msgid "Allows to add comments to a bug."
-msgstr ""
+msgstr "Позволяет добавлять коментарии к багу."
 
-#: src/bugtracker/configure.zcml:71
+#: src/bugtracker/configure.zcml:73
 msgid "Add Bug Comment"
-msgstr ""
+msgstr "Добавление коментария к багу"
 
-#: src/bugtracker/configure.zcml:80
+#: src/bugtracker/configure.zcml:82
 msgid "Allows to add attachments (files and images)  to a bug."
-msgstr ""
+msgstr "Позволяет добавлять файлы и изображения к багу."
 
-#: src/bugtracker/configure.zcml:80
+#: src/bugtracker/configure.zcml:82
 msgid "Add Bug Attachment"
-msgstr ""
+msgstr "Добавление файлов к багу"
 
 #: src/bugtracker/interfaces.py:100
 msgid "Defines the release for which the bug is scheduled."
-msgstr ""
+msgstr "Определяет релиз для которого запланирован баг"
 
-#: src/bugtracker/interfaces.py:106
-msgid "Owners"
-msgstr "Владельцы"
-
 #: src/bugtracker/interfaces.py:107
 msgid "List of people assigned as owners of the bug."
-msgstr ""
+msgstr "Список людей записанных как владельцы этого бага."
 
-#: src/bugtracker/interfaces.py:139
-#: src/bugtracker/browser/configure.zcml:211
+#: src/bugtracker/interfaces.py:139 src/bugtracker/browser/configure.zcml:213
 #: src/bugtracker/browser/dependencies.pt:59
 #: src/bugtracker/browser/dependencies.pt:65
 msgid "Dependencies"
@@ -497,35 +590,32 @@
 
 #: src/bugtracker/interfaces.py:140
 msgid "Other bugs this bug depends on."
-msgstr ""
+msgstr "Другие баги от которых зависит данный баг."
 
-#: src/bugtracker/interfaces.py:141
-#: src/bugtracker/interfaces.py:154
+#: src/bugtracker/interfaces.py:141 src/bugtracker/interfaces.py:154
 msgid "Bug Id"
-msgstr ""
+msgstr "Идентификатор бага"
 
-#: src/bugtracker/interfaces.py:142
-#: src/bugtracker/interfaces.py:155
+#: src/bugtracker/interfaces.py:142 src/bugtracker/interfaces.py:155
 msgid "Bug Id."
-msgstr ""
+msgstr "Идентификатор бага."
 
-#: src/bugtracker/interfaces.py:152
-#: src/bugtracker/browser/dependencies.pt:60
+#: src/bugtracker/interfaces.py:152 src/bugtracker/browser/dependencies.pt:60
 #: src/bugtracker/browser/dependencies.pt:64
 msgid "Dependents"
 msgstr "Зависимые"
 
 #: src/bugtracker/interfaces.py:153
 msgid "Other bugs that depend on this one"
-msgstr ""
+msgstr "Другие баги которые зависят от данного бага"
 
 #: src/bugtracker/interfaces.py:193
 msgid "Body"
-msgstr ""
+msgstr "Содержимое"
 
 #: src/bugtracker/interfaces.py:194
 msgid "Renderable body of the Comment."
-msgstr ""
+msgstr "Содержимое коментария."
 
 #: src/bugtracker/interfaces.py:214
 msgid "Default"
@@ -533,82 +623,69 @@
 
 #: src/bugtracker/interfaces.py:215
 msgid "Default value of the vocabulary."
-msgstr ""
+msgstr "Значение по умолчанию из словаря."
 
-#: src/bugtracker/interfaces.py:42
-#: src/bugtracker/interfaces.py:63
+#: src/bugtracker/interfaces.py:42 src/bugtracker/interfaces.py:63
 msgid "Title"
 msgstr "Заголовок"
 
 #: src/bugtracker/interfaces.py:43
 msgid "Title of the bug tracker."
-msgstr ""
+msgstr "Заголовок трекера багов."
 
 #: src/bugtracker/interfaces.py:64
 msgid "Title/Summary of the bug."
-msgstr ""
+msgstr "Заголовок/Краткое описание бага."
 
-#: src/bugtracker/interfaces.py:68
+#: src/bugtracker/interfaces.py:68 src/bugtracker/browser/bug_overview.pt:60
+#: src/bugtracker/browser/bug_edit.pt:70 src/bugtracker/browser/bug_add.pt:57
 msgid "Description"
 msgstr "Описание"
 
 #: src/bugtracker/interfaces.py:69
 msgid "Detailed Description of the bug."
-msgstr ""
+msgstr "Детальное описание бага."
 
 #: src/bugtracker/interfaces.py:73
 msgid "Submitter"
-msgstr ""
+msgstr "Репортер"
 
 #: src/bugtracker/interfaces.py:74
 msgid "Name of the person that submitted the bug."
-msgstr ""
+msgstr "Имя человека который нашел баг."
 
-#: src/bugtracker/interfaces.py:78
-msgid "Status"
-msgstr "Статус"
-
 #: src/bugtracker/interfaces.py:79
 msgid "The current status of the bug."
-msgstr ""
+msgstr "Текущий статус бага."
 
-#: src/bugtracker/interfaces.py:85
-msgid "Priority"
-msgstr "Приоритет"
-
 #: src/bugtracker/interfaces.py:86
 msgid "Specifies how urgent this bug is."
-msgstr ""
+msgstr "Определяет срочность бага."
 
-#: src/bugtracker/interfaces.py:92
-msgid "Type"
-msgstr "Тип"
-
 #: src/bugtracker/interfaces.py:93
 msgid "Specifies of what nature the bug is."
-msgstr ""
+msgstr "Определяет тип бага."
 
-#: src/bugtracker/vocabulary.py:120
+#: src/bugtracker/vocabulary.py:101
+msgid "Cannot delete default value '${value}'."
+msgstr "Невозможно удалить значение по умолчанию '${value}'."
+
+#: src/bugtracker/vocabulary.py:124
 msgid "The value '${value}' was not found in the vocabulary"
-msgstr ""
+msgstr "Значение '${value}' не было найдено в словаре"
 
-#: src/bugtracker/vocabulary.py:136
+#: src/bugtracker/vocabulary.py:140
 msgid "Status Definitions"
-msgstr ""
+msgstr "Определения статуса"
 
-#: src/bugtracker/vocabulary.py:146
+#: src/bugtracker/vocabulary.py:150
 msgid "Release Definitions"
-msgstr ""
+msgstr "Определения релизов"
 
-#: src/bugtracker/vocabulary.py:156
+#: src/bugtracker/vocabulary.py:160
 msgid "Priority Definitions"
-msgstr ""
+msgstr "Определения приоритетов"
 
-#: src/bugtracker/vocabulary.py:166
+#: src/bugtracker/vocabulary.py:170
 msgid "Bug Type Definitions"
-msgstr ""
-
-#: src/bugtracker/vocabulary.py:97
-msgid "Cannot delete default value '${value}'."
-msgstr "Невозможно удалить значение по умолчанию '${value}'."
-
+msgstr "Определения типов бага"

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/DEPENDENCIES.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/DEPENDENCIES.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/DEPENDENCIES.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -7,12 +7,14 @@
 zope.cachedescriptors
 zope.component
 zope.configuration
+zope.deprecation
 zope.event
 zope.exceptions
 # zope.hookable isn't imported here, but we need it to be available
 # when zope.component is first imported
 zope.hookable
 zope.i18n
+zope.index
 zope.interface
 zope.modulealias
 zope.pagetemplate

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/PACKAGE.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/PACKAGE.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/PACKAGE.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -49,7 +49,7 @@
 decorator.py
 dependable
 dublincore
-errorservice
+error
 event
 exception
 filerepresentation
@@ -63,13 +63,14 @@
 __init__.py
 # maybe we can refactor this away
 interface
+intid
 # XXX used by zope.app.utility.browser
 introspector
+keyreference
 location
 module
 observable
 pagetemplate
-pluggableauth
 preview
 principalannotation
 publication
@@ -82,11 +83,14 @@
 site
 size
 tests
+testing
 # This should go into the (new) datetimeutils package
 timezones.py
 locales
 traversing
 utility
+wsgi
 zapi
+zopeappgenerations
 
 </collection>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/DEPENDENCIES.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/DEPENDENCIES.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/DEPENDENCIES.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1 +1,2 @@
 zope.structuredtext
+zope.app.preference
\ No newline at end of file

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/apidoc-meta.zcml (from rev 30223, Zope3/trunk/src/zope/app/apidoc/apidoc-meta.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/apidoc-meta.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/bookmodule/book.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/bookmodule/book.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/bookmodule/book.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,5 +1,6 @@
 <configure
-    xmlns="http://namespaces.zope.org/apidoc">
+    xmlns="http://namespaces.zope.org/apidoc"
+    xmlns:zcml="http://namespaces.zope.org/zcml">
 
   <!-- Interfaces -->
   <bookchapter 
@@ -52,6 +53,7 @@
       id="ca"
       title="Component Architecture"
       />
+  
   <configure package="zope.component">
     <bookchapter 
         id="global"
@@ -72,7 +74,7 @@
         doc_path="factory.txt"
         />
   </configure>
-
+  
   <configure package="zope.app.component">
     <bookchapter
         id="local"
@@ -100,8 +102,17 @@
         />
   </configure>
 
+  <!-- Events -->
+  <configure package="zope.event">
+    <bookchapter
+        id="event"
+        title="Events"
+        doc_path="README.txt"
+        />
+  </configure>
+
   <!-- Security -->
-  <configure package="zope.security">
+ <configure package="zope.security">
     <bookchapter
         id="security"
         title="Security"
@@ -132,14 +143,6 @@
         parent="security/untrusted"
         />
   </configure>
-  <configure package="zope.app.securitypolicy">
-    <bookchapter
-        id="zopepolicy"
-        title="Default Security Policy"
-        doc_path="zopepolicy.txt"
-        parent="security"
-        />
-  </configure>
   <configure package="zope.app.security">
     <bookchapter
         id="globalprincipals"
@@ -148,44 +151,7 @@
         parent="security"
         />
   </configure>
-  <configure package="zope.app.authentication">
-    <bookchapter
-        id="authentication"
-        title="Pluggable Authentication"
-        doc_path="README.txt"
-        parent="security"
-        />
-    <bookchapter
-        id="principalfolder"
-        title="Principal Folder"
-        doc_path="principalfolder.txt"
-        parent="security/authentication"
-        />
-    <bookchapter
-        id="groupfolder"
-        title="Group Folders"
-        doc_path="groupfolder.txt"
-        parent="security/authentication"
-        />
-  </configure>
-  <configure package="zope.app.homefolder">
-    <bookchapter
-        id="homefolder"
-        title="Principal Home Folder"
-        doc_path="README.txt"
-        parent="security"
-        />
-  </configure>
 
-  <!-- Events -->
-  <configure package="zope.event">
-    <bookchapter
-        id="event"
-        title="Events"
-        doc_path="README.txt"
-        />
-  </configure>
-
   <!-- Testing -->
   <bookchapter
       id="test"
@@ -216,81 +182,6 @@
         />
   </configure>
 
-  <!-- ZAPI -->
-  <configure package="zope.app.zapi">
-    <bookchapter
-        id="zapi"
-        title="ZAPI"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Workflow -->
-  <configure package="zope.wfmc">
-    <bookchapter
-        id="wfmc"
-        title="WfMC Workflows"
-        doc_path="README.txt"
-        />
-    <bookchapter
-        id="xpdl"
-        title="Workflows using XPDL"
-        doc_path="README.txt"
-        parent="wfmc"
-        />
-  </configure>
-  <configure package="zope.app.wfmc">
-    <bookchapter
-        id="zcml"
-        title="Registering XPDL using ZCML"
-        doc_path="zcml.txt"
-        parent="wfmc"
-        />
-  </configure>
-
-  <!-- Indexes and Catalogs -->
-  <bookchapter
-      id="indexcatalog"
-      title="Indexes and Catalogs"
-      />
-  <configure package="zope.index">
-    <bookchapter
-        id="fieldindex"
-        title="Field Indexes"
-        doc_path="field/README.txt"
-        parent="indexcatalog"
-        />
-    <bookchapter
-        id="testindex"
-        title="Text Indexes"
-        doc_path="text/textindex.txt"
-        parent="indexcatalog"
-        />
-  </configure>
-  <configure package="zope.app.catalog">
-    <bookchapter
-        id="catalog"
-        title="Catalog"
-        doc_path="README.txt"
-        parent="indexcatalog"
-        />
-  </configure>
-
-  <!-- Sessions -->
-  <configure package="zope.app.session">
-    <bookchapter
-        id="session"
-        title="Sessions"
-        doc_path="design.txt"
-        />
-    <bookchapter
-        id="api"
-        title="API"
-        doc_path="api.txt"
-        parent="session"
-        />
-  </configure>
-
   <!-- Cached Properties -->
   <bookchapter
       id="i18nl10n"
@@ -314,62 +205,9 @@
         />
   </configure>
 
-  <!-- Generations -->
-  <configure package="zope.app.generations">
-    <bookchapter
-        id="generations"
-        title="Generations"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Locking -->
-  <configure package="zope.app.locking">
-    <bookchapter
-        id="locking"
-        title="Object Locking"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Version Control -->
-  <configure package="zope.app.versioncontrol">
-    <bookchapter
-        id="versioncontrol"
-        title="Version Control"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Persistent Modules -->
-  <configure package="zope.app.module">
-    <bookchapter
-        id="module"
-        title="Persistent Modules"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Zope Tree -->
-  <configure package="zope.app.tree">
-    <bookchapter
-        id="tree"
-        title="Zope Tree"
-        doc_path="README.txt"
-        />
-  </configure>
-
-  <!-- Persistent Key References -->
-  <configure package="zope.app.keyreference">
-    <bookchapter
-        id="keyref"
-        title="Persistent Key References"
-        doc_path="persistent.txt"
-        />
-  </configure>
-
   <!-- BForest -->
-  <configure package="zope.bforest">
+  <configure package="zope.bforest"
+             zcml:condition="installed zope.bforest">
     <bookchapter
         id="bforest"
         title="BForest API"

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/codemodule/README.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/codemodule/README.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/codemodule/README.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -309,7 +309,7 @@
 
   >>> print info #doctest:+ELLIPSIS
   File
-  ".../src/zope/app/apidoc/codemodule/configure.zcml",
+  ".../zope/app/apidoc/codemodule/configure.zcml",
   line 1.0-53.0
 
 the sub-directives,

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/presentation.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/presentation.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/apidoc/presentation.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -67,7 +67,7 @@
         info['path'] = getPythonPath(factory)
 
     elif isinstance(factory, FunctionType):
-        info['path'] = getPythonPath(factory.factory)
+        info['path'] = getPythonPath(factory)
     else:
         info['path'] = getPythonPath(factory)
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/ftests/test_translationdomaincontrol.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/ftests/test_translationdomaincontrol.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/ftests/test_translationdomaincontrol.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -37,7 +37,8 @@
                                       'domain': u'zope',
                                       'RELOAD': u'Reload'})
         body = response.getBody()
-        self.assert_('Message Catalog successfully reloaded.' in body)
+        self.assert_('Message Catalog for de language in zope domain'
+                     ' successfully reloaded.' in body)
 
 
 def test_suite():

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -10,30 +10,39 @@
          tal:condition="status"
          tal:content="status" />
 
-    <table>
+    <div tal:repeat="domainInfo view/getCatalogsInfo">
 
-        <tr>         
-           <th i18n:translate="">Domain</th>
+    <div class="row">
+        <div class="label" i18n:translate="">Domain</div>
+        <div class="field" tal:content="domainInfo/domain">domain</div>
+    </div>
+
+    <table class="listing">
+
+        <thead>
+        <tr>
            <th i18n:translate="">Language</th>
            <th i18n:translate="">Files</th>
            <th>&nbsp;</th>
-        </tr>   
+        </tr>
+        </thead>
 
-        <tr tal:repeat="catalogInfo view/getCatalogsInfo">
-            <td tal:content="catalogInfo/domain"></td>
-            <td tal:content="catalogInfo/language"></td>     
+        <tr tal:repeat="catalogInfo domainInfo/languagesInfo">
+            <td tal:content="catalogInfo/language"></td>
             <td>
-                <div tal:repeat="fileName catalogInfo/fileNames" 
+                <div tal:repeat="fileName catalogInfo/fileNames"
                      tal:content="fileName"></div>
             </td>
             <td>
-                <a tal:attributes="href string:?RELOAD=&domain=${catalogInfo/domain}&language=${catalogInfo/language}"
+                <a tal:attributes="href string:?RELOAD=&domain=${domainInfo/domain}&language=${catalogInfo/language}"
                    i18n:translate="reload-button">Reload</a>
             </td>
         </tr>
 
     </table>
-        
+
     </div>
+
+    </div>
   </body>
 </html>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/applicationcontrol/browser/translationdomaincontrol.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -21,6 +21,7 @@
 from zope.app import zapi
 from zope.app.i18n import ZopeMessageIDFactory as _
 
+
 class TranslationDomainControlView(object):
 
     def getCatalogsInfo(self):
@@ -28,17 +29,17 @@
         for name, domain in zapi.getUtilitiesFor(ITranslationDomain):
             if not hasattr(domain, 'getCatalogsInfo'):
                 continue
+            lang_info = []
+            info.append({'domain': name, 'languagesInfo': lang_info})
             for language, fileNames in domain.getCatalogsInfo().items():
-                info.append({'domain': name,
-                             'language': language,
+                lang_info.append({'language': language,
                              'fileNames': fileNames})
         return info
 
-
     def reloadCatalogs(self):
         """Do the reloading !"""
         status = ''
-        
+
         if 'RELOAD' in self.request:
             language = self.request.get('language')
             domain = self.request.get('domain')
@@ -48,6 +49,9 @@
                 if lang == language:
                     domain.reloadCatalogs(fileNames)
 
-            status = _('Message Catalog successfully reloaded.')
+            status = _('Message Catalog for ${language} language'
+                    ' in ${domain} domain successfully reloaded.')
+            status.mapping['language'] = language
+            status.mapping['domain'] = domain.domain
 
         return status

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/SETUP.cfg (from rev 30223, Zope3/trunk/src/zope/app/authentication/SETUP.cfg)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/SETUP.cfg
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -40,10 +40,26 @@
       provides=".interfaces.ICredentialsPlugin"
       />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="authentication"
+        title="Pluggable Authentication"
+        doc_path="README.txt"
+        parent="security"
+        />
+
+  </configure>
+
   <include file="session.zcml" />
   <include file="httpplugins.zcml" />
   <include file="principalfolder.zcml" />
   <include file="groupfolder.zcml" />
+  <include file="ftpplugins.zcml" />
 
   <include package=".browser" />
 

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.py (from rev 30223, Zope3/trunk/src/zope/app/authentication/ftpplugins.py)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.py
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.zcml (from rev 30223, Zope3/trunk/src/zope/app/authentication/ftpplugins.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/ftpplugins.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/groupfolder.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/groupfolder.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/groupfolder.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -44,4 +44,19 @@
 
   <include package=".browser" file="groupfolder.zcml" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="groupfolder"
+        title="Group Folders"
+        doc_path="groupfolder.txt"
+        parent="security/authentication"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/httpplugins.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/httpplugins.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/httpplugins.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -73,7 +73,16 @@
           >>> print plugin.extractCredentials(TestRequest())
           None
 
+        This plugin only works with HTTP requests.
+
+          >>> from zope.publisher.base import TestRequest
+          >>> print plugin.extractCredentials(TestRequest('/'))
+          None
+
         """
+        if not IHTTPRequest.providedBy(request):
+            return None
+
         if request._auth:
             if request._auth.lower().startswith(u'basic '):
                 credentials = request._auth.split()[-1]
@@ -108,11 +117,11 @@
           >>> request = TestRequest('/')
           >>> response = request.response
           >>> print plugin.challenge(request)
-          None
+          False
 
         """
         if not IHTTPRequest.providedBy(request):
-            return None
+            return False
         request.response.setHeader("WWW-Authenticate",
                                    "basic realm=%s" % self.realm, literal=True)
         request.response.setStatus(401)
@@ -137,4 +146,4 @@
     pass
 
 class HTTPBasicAuthChallenger(Persistent, Contained):
-    pass
\ No newline at end of file
+    pass

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -22,7 +22,7 @@
 from zope import component
 from zope.event import notify
 from zope.schema import Text, TextLine, Password
-from zope.publisher.interfaces.browser import IBrowserRequest
+from zope.publisher.interfaces import IRequest
 from zope.security.interfaces import IGroupAwarePrincipal
 
 from zope.app.container.contained import Contained
@@ -288,8 +288,8 @@
     the principal to create and a request:
 
       >>> info = PrincipalInfo('users.mary', 'mary', 'Mary', 'The site admin.')
-      >>> from zope.publisher.browser import TestRequest
-      >>> request = TestRequest()
+      >>> from zope.publisher.base import TestRequest
+      >>> request = TestRequest('/')
       >>> factory = AuthenticatedPrincipalFactory(info, request)
       >>> principal = factory()
 
@@ -320,7 +320,7 @@
     For information on how factories are used in the authentication process,
     see README.txt.
     """
-    component.adapts(interfaces.IPrincipalInfo, IBrowserRequest)
+    component.adapts(interfaces.IPrincipalInfo, IRequest)
 
     interface.implements(interfaces.IAuthenticatedPrincipalFactory)
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/principalfolder.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -36,4 +36,19 @@
 
   <include package=".browser" file="principalfolder.zcml" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="principalfolder"
+        title="Principal Folder"
+        doc_path="principalfolder.txt"
+        parent="security/authentication"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/session.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/session.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/session.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -22,6 +22,7 @@
 
 from zope.interface import implements, Interface
 from zope.schema import TextLine
+from zope.publisher.interfaces.http import IHTTPRequest
 
 from zope.app import zapi
 from zope.app.component import hooks
@@ -157,6 +158,8 @@
 
     def extractCredentials(self, request):
         """Extracts credentials from a session if they exist."""
+        if not IHTTPRequest.providedBy(request):
+            return None
 
         sessionData = ISession(request)[
             'zope.app.authentication.browserplugins']
@@ -227,6 +230,9 @@
         This can be used by the login form to redirect the user back to the
         originating URL upon successful authentication.
         """
+        if not IHTTPRequest.providedBy(request):
+            return False
+
         site = hooks.getSite()
         camefrom = request.getURL()
         url = '%s/@@%s?%s' % (absoluteURL(site, request),
@@ -237,6 +243,9 @@
 
     def logout(self, request):
         """Performs logout by clearing session data credentials."""
+        if not IHTTPRequest.providedBy(request):
+            return False
+
         sessionData = ISession(request)[
             'zope.app.authentication.browserplugins']
         sessionData['credentials'] = None

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/tests.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/tests.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/tests.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -37,16 +37,18 @@
         PersistentSessionDataContainer, RAMSessionDataContainer
 from zope.app.session.http import CookieClientIdManager
 
+from zope.publisher import base
+from zope.app.authentication.session import SessionCredentialsPlugin
 
 class TestClientId(object):
     implements(IClientId)
     def __new__(cls, request):
         return 'dummyclientidfortesting'
 
-def siteSetUp(self, test=None):
+def siteSetUp(test):
     placefulSetUp(site=True)
 
-def siteTearDown(self, test=None):
+def siteTearDown(test):
     placefulTearDown()
 
 def sessionSetUp(session_data_container_class=PersistentSessionDataContainer):
@@ -57,10 +59,45 @@
     sdc = session_data_container_class()
     ztapi.provideUtility(ISessionDataContainer, sdc, '')
 
+def nonHTTPSessionTestCaseSetUp(sdc_class=PersistentSessionDataContainer):
+    # I am getting an error with ClientId and not TestClientId
+    placelesssetup.setUp()
+    ztapi.provideAdapter(IRequest, IClientId, ClientId)
+    ztapi.provideAdapter(IRequest, ISession, Session)
+    ztapi.provideUtility(IClientIdManager, CookieClientIdManager())
+    sdc = sdc_class()
+    ztapi.provideUtility(ISessionDataContainer, sdc, '')
+
+
+class NonHTTPSessionTestCase(unittest.TestCase):
+    # Small test suite to catch an error with non HTTP protocols, like FTP
+    # and SessionCredentialsPlugin.
+    def setUp(self):
+        nonHTTPSessionTestCaseSetUp()
+
+    def tearDown(self):
+        placefulTearDown()
+
+    def test_exeractCredentials(self):
+        plugin = SessionCredentialsPlugin()
+
+        self.assertEqual(plugin.extractCredentials(base.TestRequest('/')), None)
+
+    def test_challenge(self):
+        plugin = SessionCredentialsPlugin()
+
+        self.assertEqual(plugin.challenge(base.TestRequest('/')), False)
+
+    def test_logout(self):
+        plugin = SessionCredentialsPlugin()
+
+        self.assertEqual(plugin.logout(base.TestRequest('/')), False)
+
 def test_suite():
     return unittest.TestSuite((
         doctest.DocTestSuite('zope.app.authentication.generic'),
         doctest.DocTestSuite('zope.app.authentication.httpplugins'),
+        doctest.DocTestSuite('zope.app.authentication.ftpplugins'),
         doctest.DocFileSuite('principalfolder.txt'),
         doctest.DocTestSuite('zope.app.authentication.principalfolder',
                              setUp=placelesssetup.setUp,
@@ -82,6 +119,7 @@
                              setUp=placelesssetup.setUp,
                              tearDown=placelesssetup.tearDown,
                              ),
+        unittest.makeSuite(NonHTTPSessionTestCase),
         ))
 
 if __name__ == '__main__':

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/zope.app.authentication-configure.zcml (from rev 30223, Zope3/trunk/src/zope/app/authentication/zope.app.authentication-configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/authentication/zope.app.authentication-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/README.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/README.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/README.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -11,7 +11,7 @@
 other things, an attribute index. It indexes attributes of objects. To
 see how this works, we'll create a demonstration attribute index. Our
 attribute index will simply keep track of objects that have a given
-attribute value.  The `catalog` package provides an attrbute-index
+attribute value.  The `catalog` package provides an attribute-index
 mix-in class that is meant to work with a base indexing class. First,
 we'll write the base index class:
 
@@ -71,7 +71,7 @@
     ...             ):
     ...    zope.interface.implements(zope.app.catalog.interfaces.ICatalogIndex)
 
-Unfortunately, because of the way we currenty handle containment
+Unfortunately, because of the way we currently handle containment
 constraints, we have to provide `ICatalogIndex`, which extends
 `IContained`. We subclass `Contained` to get an implementation for
 `IContained`. 
@@ -175,7 +175,7 @@
     [0, 0, 0]
 
 Note that you don't have to use the catalog's search methods. You can
-access it's indexes directly, since the catalog is a mapping:
+access its indexes directly, since the catalog is a mapping:
 
     >>> [(name, cat[name].field_name) for name in cat]
     [(u'age', 'age'), (u'color', 'color'), (u'size', 'sz')]

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/catalog/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,76 +1,109 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
     xmlns:browser="http://namespaces.zope.org/browser"
+    i18n_domain="zope"
     >
 
-<localUtility class=".catalog.Catalog">
-  <factory
-      id="zope.app.catalog"
+  <localUtility class=".catalog.Catalog">
+    <factory
+        id="zope.app.catalog"
+        />
+    <require
+        interface="zope.app.catalog.interfaces.ICatalogQuery"
+        permission="zope.Public"
+        />
+    <require
+        interface="zope.app.catalog.interfaces.ICatalogEdit"
+        permission="zope.ManageServices"
+        />
+    <require
+        interface="zope.app.container.interfaces.IContainer"
+        permission="zope.ManageServices"
+        />
+  </localUtility>
+  
+  <content class=".catalog.ResultSet">
+    <require
+        attributes="__iter__ __len__"
+        permission="zope.Public"/>
+  </content>
+  
+  <subscriber
+      handler=".catalog.indexAdded"
+      for=".interfaces.ICatalogIndex
+           zope.app.container.interfaces.IObjectAddedEvent"
       />
-  <require
-      interface="zope.app.catalog.interfaces.ICatalogQuery"
-      permission="zope.Public"
+  
+  <subscriber
+      handler=".catalog.indexDocSubscriber"
+      for="zope.app.intid.interfaces.IIntIdAddedEvent"
       />
-  <require
-      interface="zope.app.catalog.interfaces.ICatalogEdit"
-      permission="zope.ManageServices"
+  
+  <subscriber
+      handler=".catalog.reindexDocSubscriber"
+      for="zope.app.event.objectevent.IObjectModifiedEvent"
       />
-  <require
-      interface="zope.app.container.interfaces.IContainer"
-      permission="zope.ManageServices"
+  
+  <subscriber
+      handler=".catalog.unindexDocSubscriber"
+      for="zope.app.intid.interfaces.IIntIdRemovedEvent"
       />
-</localUtility>
+  
+  
+  <content class=".field.FieldIndex">
+    <require
+        permission="zope.ManageServices"
+        interface=".interfaces.IAttributeIndex
+                   zope.index.interfaces.IStatistics
+                  "
+        set_schema=".interfaces.IAttributeIndex"
+        />
+  </content>
+  
+  <content class=".text.TextIndex">
+    <require
+        permission="zope.ManageServices"
+        interface=".interfaces.IAttributeIndex
+                   zope.index.interfaces.IStatistics
+                  "
+        set_schema=".interfaces.IAttributeIndex"
+        />
+  </content>
+  
+  <include package=".browser" />
 
-<content class=".catalog.ResultSet">
-  <require
-      attributes="__iter__ __len__"
-      permission="zope.Public"/>
-</content>
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
 
-<subscriber
-    handler=".catalog.indexAdded"
-    for=".interfaces.ICatalogIndex
-         zope.app.container.interfaces.IObjectAddedEvent"
-    />
+    <apidoc:bookchapter
+        id="indexcatalog"
+        title="Indexes and Catalogs"
+        />
+    <apidoc:bookchapter
+        id="catalog"
+        title="Catalog"
+        doc_path="README.txt"
+        parent="indexcatalog"
+        />
 
-<subscriber
-    handler=".catalog.indexDocSubscriber"
-    for="zope.app.intid.interfaces.IIntIdAddedEvent"
-    />
+    <configure package="zope.index">
+      <apidoc:bookchapter
+          id="fieldindex"
+          title="Field Indexes"
+          doc_path="field/README.txt"
+          parent="indexcatalog"
+          />
+      <apidoc:bookchapter
+          id="testindex"
+          title="Text Indexes"
+          doc_path="text/textindex.txt"
+          parent="indexcatalog"
+          />
+    </configure>
 
-<subscriber
-    handler=".catalog.reindexDocSubscriber"
-    for="zope.app.event.objectevent.IObjectModifiedEvent"
-    />
+  </configure>
 
-<subscriber
-    handler=".catalog.unindexDocSubscriber"
-    for="zope.app.intid.interfaces.IIntIdRemovedEvent"
-    />
-
-
-<content class=".field.FieldIndex">
-  <require
-      permission="zope.ManageServices"
-      interface=".interfaces.IAttributeIndex
-                 zope.index.interfaces.IStatistics
-                "
-      set_schema=".interfaces.IAttributeIndex"
-      />
-</content>
-
-<content class=".text.TextIndex">
-  <require
-      permission="zope.ManageServices"
-      interface=".interfaces.IAttributeIndex
-                 zope.index.interfaces.IStatistics
-                "
-      set_schema=".interfaces.IAttributeIndex"
-      />
-</content>
-
-
-
-<include package=".browser" />
-
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/component/browser/registration.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/component/browser/registration.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/component/browser/registration.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -165,7 +165,7 @@
             "registration code now uses the component directly instead "
             "of using the component's path.",
             DeprecationWarning, stacklevel=2,
-            )        
+            )
         super(ComponentPathWidget, self).__init__(*args, **kw)
 
     def __call__(self):
@@ -323,9 +323,10 @@
         return ''
 
     def remove_objects(self, key_list):
-        """Remove the directives from the container."""
+        """Unregister and remove the directives from the container."""
         container = self.context
         for name in key_list:
+            container[name].status = InactiveStatus
             del container[name]
 
     def registrationInfo(self):

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/component/interface.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/component/interface.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/component/interface.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -18,7 +18,7 @@
 __docformat__ = 'restructuredtext'
 from types import ClassType
 from zope.component.exceptions import ComponentLookupError
-from zope.interface import directlyProvides
+from zope.interface import directlyProvides, directlyProvidedBy
 from zope.interface.interfaces import IInterface
 from zope.app import zapi
 
@@ -42,6 +42,8 @@
     >>> interfaces = gsm.getUtilitiesFor(IContentType)
     >>> list(interfaces)
     []
+
+    # provide first interface type
     >>> provideInterface('', I, IContentType)
     >>> IContentType.providedBy(I)
     True
@@ -50,6 +52,23 @@
     [u'zope.app.component.interface.I']
     >>> [iface.__name__ for (name, iface) in interfaces]
     ['I']
+
+    # provide second interface type
+    >>> class IOtherType(IInterface):
+    ...     pass
+    >>> provideInterface('', I, IOtherType)
+
+    >>> IContentType.providedBy(I)
+    True
+    >>> IOtherType.providedBy(I)
+    True
+    >>> interfaces = list(gsm.getUtilitiesFor(IContentType))
+    >>> [name for (name, iface) in interfaces]
+    [u'zope.app.component.interface.I']
+    >>> interfaces = list(gsm.getUtilitiesFor(IOtherType))
+    >>> [name for (name, iface) in interfaces]
+    [u'zope.app.component.interface.I']
+
     >>> class I1(Interface):
     ...     pass
     >>> provideInterface('', I1)
@@ -75,7 +94,7 @@
     if iface_type is not None:
         if not iface_type.extends(IInterface):
             raise TypeError(iface_type, "is not an interface type")
-        directlyProvides(interface, iface_type)
+        directlyProvides(interface, iface_type, directlyProvidedBy(interface))
     else:
         iface_type = IInterface
         

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -50,7 +50,6 @@
   <include package=".zopeappgenerations" />
 
   <!-- Services -->
-  <include package="zope.app.pluggableauth" />
   <include package="zope.app.principalannotation" />
 
   <!-- Utilities -->

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/demo/widget/help/textareawidget.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/demo/widget/help/textareawidget.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/demo/widget/help/textareawidget.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -139,47 +139,15 @@
   >>> print http(r"""
   ... POST /widgets/+/addDemoTextAreaWidget.html%3D HTTP/1.1
   ... Authorization: Basic mgr:mgrpw
-  ... Content-Type: multipart/form-data; boundary=---------------------------7d5ae0c0aea
-  ... Referer: http://localhost:8081/widgets/+/addDemoTextAreaWidget.html=
-  ... 
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.standard"
-  ... 
-  ... textarea
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.required"
-  ... 
-  ... textarea
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.constraint"
-  ... 
-  ... constraint
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.default"
-  ... 
-  ... default
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.min_length"
-  ... 
-  ... abcdef
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.max_length"
-  ... 
-  ... abcdef
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="field.min_max"
-  ... 
-  ... abcdef
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="UPDATE_SUBMIT"
-  ... 
-  ... Add
-  ... -----------------------------7d5ae0c0aea
-  ... Content-Disposition: form-data; name="add_input_name"
-  ... 
-  ... textarea
-  ... -----------------------------7d5ae0c0aea--
-  ... """)
+  ... """, form={"field.standard": "textarea",
+  ...            "field.required": "textarea",
+  ...            "field.constraint": "constraint",
+  ...            "field.default": "default",
+  ...            "field.min_length": "abcdef",
+  ...            "field.max_length": "abcdef",
+  ...            "field.min_max": "abcdef",
+  ...            "UPDATE_SUBMIT": "Add",
+  ...            "add_input_name": "textarea"})
   HTTP/1.1 303 See Other
   ...
         <div class="row">
@@ -289,4 +257,4 @@
                      title="zope.schema.Text field with min_lenght = 5 and max_length = 10">min_max</label>
             </div>
             <div class="field"><textarea cols="60" id="field.min_max" name="field.min_max" rows="15" >abcdef</textarea></div>
-        </div...
\ No newline at end of file
+        </div...

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/dublincore/creatorannotator.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/dublincore/creatorannotator.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/dublincore/creatorannotator.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -19,10 +19,14 @@
 
 from zope.app.dublincore.interfaces import IZopeDublinCore
 from zope.security.management import queryInteraction
+from zope.security.proxy import removeSecurityProxy
 
 def CreatorAnnotator(event):
     """Update Dublin-Core creator property"""
     dc = IZopeDublinCore(event.object, None)
+    # Principals that can create object do not necessarily have
+    # 'zope.app.dublincore.change' permission. See issue 373.
+    dc = removeSecurityProxy(dc)
     if dc is None:
         return
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -69,14 +69,11 @@
 
     def hasValidInput(self):
         try:
-            self.validate()
+            self.getInputValue()
             return True
         except InputErrors:
             return False
 
-    def validate(self):
-        self.getInputValue()
-
     def applyChanges(self, content):
         field = self.context
         value = self.getInputValue()

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/tests/test_checkboxwidget.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/tests/test_checkboxwidget.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/tests/test_checkboxwidget.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -122,7 +122,8 @@
     constraint will always be met with checkbox input:
 
         >>> field.required = True
-        >>> widget.validate()
+        >>> widget.getInputValue()
+        True
     """
 
     _FieldFactory = Bool

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -17,8 +17,6 @@
 """
 __docformat__ = 'restructuredtext'
 
-import re, cgi
-import traceback
 from xml.sax.saxutils import quoteattr, escape
 
 from zope.interface import implements
@@ -420,37 +418,30 @@
     attr_list = []
 
     # special case handling for cssClass
-    cssClass = ''
-    if 'cssClass' in kw:
-        if kw['cssClass']:
-            cssClass = kw['cssClass']
-        del kw['cssClass']
+    cssClass = kw.pop('cssClass', u'')
 
     # If the 'type' attribute is given, append this plus 'Type' as a
     # css class. This allows us to do subselector stuff in css without
     # necessarily having a browser that supports css subselectors.
     # This is important if you want to style radio inputs differently than
     # text inputs.
-    cssWidgetType = kw.get('type')
+    cssWidgetType = kw.get('type', u'')
     if cssWidgetType:
         cssWidgetType += u'Type'
-    else:
-        cssWidgetType = u''
-    if cssWidgetType or cssClass:
-        names = filter(None, (cssClass, cssWidgetType))
-        attr_list.append(u'class="%s"' %' '.join(names))
+    names = [c for c in (cssClass, cssWidgetType) if c]
+    if names:
+        attr_list.append(u'class="%s"' % u' '.join(names))
 
-    if 'style' in kw:
-        if kw['style'] != u'':
-            attr_list.append(u'style=%s' % quoteattr(kw['style']))
-        del kw['style']
+    style = kw.pop('style', u'')
+    if style:
+        attr_list.append(u'style=%s' % quoteattr(style))
 
     # special case handling for extra 'raw' code
     if 'extra' in kw:
-        extra = u" " + kw['extra'] # could be empty string but we don't care
-        del kw['extra']
+        # could be empty string but we don't care
+        extra = u" " + kw.pop('extra')
     else:
-        extra = ""
+        extra = u''
 
     # handle other attributes
     if kw:
@@ -476,10 +467,9 @@
 
 
 def renderElement(tag, **kw):
-    if 'contents' in kw:
+    contents = kw.pop('contents', None)
+    if contents is not None:
         # Do not quote contents, since it often contains generated HTML.
-        contents = kw['contents']
-        del kw['contents']
         return u"%s>%s</%s>" % (renderTag(tag, **kw), contents, tag)
     else:
         return renderTag(tag, **kw) + " />"

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget_macros.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget_macros.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/browser/widget_macros.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -19,4 +19,4 @@
       </div>
     </metal:block>
   </body>
-</html>
\ No newline at end of file
+</html>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/interfaces.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/interfaces.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/interfaces.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -161,22 +161,6 @@
         a checkbox) to avoid unnecessary 'required' UI notations.
         """)
 
-    def validate():
-        """Returns a valid value from the widget.
-
-        This method returns the data of the field in the native Python
-        format. The value is also validated against the field's constraints.
-
-        If the field is required and no input was found, a
-        ``MissingInputError`` will be raised.
-
-        If the field is not required and no input was found, then return the
-        ``missing_value`` of the field.
-
-        If validation errors occurred, then they are all collected in a new
-        ``WidgetInputError`` exception, which is raised.
-        """
-
     def getInputValue():
         """Return value suitable for the widget's field.
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/form/tests/test_widget.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/form/tests/test_widget.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/form/tests/test_widget.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -107,7 +107,7 @@
         ...     pass
         >>> widget = TestInputWidget(field, Request(ITestRequest))
 
-    The default implementation of hasValidInput and validate both rely on
+    The default implementation of hasValidInput relies on
     getInputValue to perform the validation of the current widget input.
     In this simple example, the widget will always raise an error when its
     field is read only:
@@ -117,13 +117,6 @@
         Traceback (most recent call last):
         WidgetInputError: ('', '', None)
 
-    A call to validate, however, accomplishes the same thing with improved
-    readability:
-
-        >>> widget.validate()
-        Traceback (most recent call last):
-        WidgetInputError: ('', '', None)
-
     A call to hasValidInput returns False instead of raising an error:
 
         >>> widget.hasValidInput()
@@ -136,10 +129,6 @@
         >>> widget.getInputValue()
         'Foo Bar'
 
-    Correspondingly, validate does not raise an error:
-
-        >>> widget.validate()
-
     and hasValidInput returns True:
 
         >>> widget.hasValidInput()

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/generations/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/generations/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/generations/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,22 +1,36 @@
 <configure xmlns="http://namespaces.zope.org/zope">
 
-<!--
-<utility
-    name="zope.app" 
-    provides=".interfaces.ISchemaManager"
-    factory=".generations.SchemaManager"
-    >
+  <!--
+  <utility
+      name="zope.app" 
+      provides=".interfaces.ISchemaManager"
+      factory=".generations.SchemaManager"
+      >
+  
+      Provide an *initial* schema manager for zope.
+  
+      We can use a factory here, because the generation is 0.
+  
+      When we get to generation 1, we'll have to actually create
+      a manager instance with the necessary parameters and a package of
+      evolution scripts.
+  </utility>
+  -->
+  
+  <include package=".browser" />
 
-    Provide an *initial* schema manager for zope.
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
 
-    We can use a factory here, because the generation is 0.
+    <apidoc:bookchapter
+        id="generations"
+        title="Generations"
+        doc_path="README.txt"
+        />
 
-    When we get to generation 1, we'll have to actually create
-    a manager instance with the necessary parameters and a package of
-    evolution scripts.
-</utility>
--->
+  </configure>
 
-<include package=".browser" />
-
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/homefolder/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/homefolder/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/homefolder/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -77,5 +77,20 @@
       description="A Principal Home Folder Manager"
       />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
 
+    <apidoc:bookchapter
+        id="homefolder"
+        title="Principal Home Folder"
+        doc_path="README.txt"
+        parent="security"
+        />
+
+  </configure>
+
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -28,4 +28,18 @@
     name="index.html"
     />
 
+<view
+    for="zope.app.publication.http.IMethodNotAllowed"
+    factory="zope.app.http.exception.methodnotallowed.MethodNotAllowedView"
+    name="index.html"
+    type="zope.publisher.interfaces.http.IHTTPRequest"
+    permission="zope.Public"
+    />
+
+<defaultView
+    for="zope.app.publication.http.IMethodNotAllowed"
+    type="zope.publisher.interfaces.http.IHTTPRequest"
+    name="index.html"
+    />
+
 </configure>

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/methodnotallowed.py (from rev 30223, Zope3/trunk/src/zope/app/http/exception/methodnotallowed.py)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/methodnotallowed.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/tests/test_methodnotallowed.py (from rev 30223, Zope3/trunk/src/zope/app/http/exception/tests/test_methodnotallowed.py)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/http/exception/tests/test_methodnotallowed.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/keyreference/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/keyreference/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/keyreference/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -17,4 +17,18 @@
       factory=".persistent.connectionOfPersistent"
       />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="keyref"
+        title="Persistent Key References"
+        doc_path="persistent.txt"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/de/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/de/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/de/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -9,7 +9,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: zope\n"
-"POT-Creation-Date: Sat Apr 02 22:40:37 2005\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: 2005-04-03 11:31+0200\n"
 "Last-Translator: Egon Frerich <e.frerich at nord-com.net>\n"
 "Language-Team: German <<zope3-dev at zope.org>>\n"
@@ -230,29 +230,25 @@
 msgstr "Persistenz-Rahmen"
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-msgid "Transaction API"
-msgstr "Transaktions-API"
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr "Zope Objekt-Datenbank (ZODB)"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 msgid "Connection Management"
 msgstr "Verbindungsverwaltung"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 msgid "Sub-Transactions"
 msgstr "Untertransaktionen"
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr "Zusammenarbeit"
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 msgid "Schema Fields"
 msgstr "Felder im Schema"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr "Zusammenarbeit"
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 msgid "Interfaces and Schemas"
 msgstr "Schnittstellen und Schemata"
@@ -393,17 +389,6 @@
 msgid "Attributes/Properties"
 msgstr "Attribute/Eigenschaften"
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr "Typ:"
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr "Wert:"
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -436,6 +421,17 @@
 msgid "Documentation String"
 msgstr "Dokumentations-String"
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr "Typ:"
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr "Wert:"
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 msgid "Directly provided interfaces"
 msgstr "Direkt bereitgestellte Schnittstelle"
@@ -572,12 +568,11 @@
 msgid "XML element representing the configuration root."
 msgstr "XML-Element, das die Konfigurationswurzel darstellt"
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 msgid "<subscription>"
 msgstr "Abonnement"
 
-#: src/zope/app/apidoc/component.py:202
-#: src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr "<i>kein Name</i>"
 
@@ -626,6 +621,26 @@
 msgid "(name: ${name})"
 msgstr "Name der Datenbank: ${name}"
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+msgid "registered:"
+msgstr "Registriert:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr "Notwendig:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr "Keine Schnittstelle notwendig."
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr "liefert:"
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 msgid "No interface provided."
 msgstr "Keine Schnittstelle bereitgestellt"
@@ -748,7 +763,8 @@
 
 #: src/zope/app/apidoc/ifacemodule/index.pt:297
 msgid "A list of utilities that are are registered to provide this interface."
-msgstr "Eine Liste registrierter Utilities, welche diese Schnittstelle bereitstellen."
+msgstr ""
+"Eine Liste registrierter Utilities, welche diese Schnittstelle bereitstellen."
 
 # Default: "Bases"
 #: src/zope/app/apidoc/ifacemodule/index.pt:310
@@ -784,7 +800,8 @@
 msgstr "Es sind keine besonderen Adapter für diese Schnittstelle registriert."
 
 #: src/zope/app/apidoc/ifacemodule/menu.pt:35
-msgid "Note: These are only interfaces that are registered with the site manager."
+msgid ""
+"Note: These are only interfaces that are registered with the site manager."
 msgstr ""
 "Anmerkung: Dies sind nur Schnittstellen, die mit dem "
 "Webplatzverwalterregistriert sind."
@@ -793,30 +810,10 @@
 msgid "Interface Finder:"
 msgstr "Schnittstellen-Finder:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-msgid "registered:"
-msgstr "Registriert:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr "Präsentationstyp:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr "Notwendig:"
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr "Keine Schnittstelle notwendig."
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr "liefert:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 msgid "layer:"
 msgstr "Ebene:"
@@ -857,8 +854,7 @@
 "Fällen nützlich \n"
 "    sein, in denen Sie z.B. alle Inhaltstypen feststellen wollen."
 
-#: src/zope/app/apidoc/utilities.py:117
-#: src/zope/app/apidoc/utilities.py:119
+#: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
 msgid "n/a"
 msgstr "entfällt"
 
@@ -980,7 +976,8 @@
 msgstr "Unterdirektiven"
 
 #: src/zope/app/apidoc/zcmlmodule/menu.pt:5
-msgid "Namespaces that are not full URLs start with \"http://namespaces.zope.org/\"."
+msgid ""
+"Namespaces that are not full URLs start with \"http://namespaces.zope.org/\"."
 msgstr ""
 "Namensräume, die nicht als volle URLs angegeben sind, beginnen mit \"http://"
 "namespaces.zope.org\"."
@@ -1059,7 +1056,8 @@
 msgstr "Sekunden"
 
 #: src/zope/app/applicationcontrol/browser/server-control.pt:15
-msgid "If you specify a time of 0 seconds, then the server will do a hard shutdown."
+msgid ""
+"If you specify a time of 0 seconds, then the server will do a hard shutdown."
 msgstr ""
 "Wenn Sie eine Zeit von 0 Sekunden eingeben, dann wird der Server sofort "
 "angehalten (hard shutdown)."
@@ -1088,21 +1086,24 @@
 msgid "Domain"
 msgstr "Domäne"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr "Sprache"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr "Dateien"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 msgid "reload-button"
 msgstr "Aktualisieren"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+#, fuzzy
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
 msgstr "Nachrichtenkatalog erfolgreich neu geladen."
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
@@ -1436,8 +1437,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
-#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 #: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
+#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 msgid "save-changes-button"
 msgstr "Änderungen speichern"
 
@@ -1446,21 +1447,21 @@
 msgstr "Cache ungültig machen"
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
-#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/cache/browser/ramstats.pt:38
+#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1472,7 +1473,8 @@
 
 #: src/zope/app/cache/browser/cacheableedit.pt:6
 msgid "This edit form allows you to associate a cache with this object."
-msgstr "Dieses Formular erlaubt Ihnen, einen Cache für dieses Objekt zu definieren."
+msgstr ""
+"Dieses Formular erlaubt Ihnen, einen Cache für dieses Objekt zu definieren."
 
 #: src/zope/app/cache/browser/configure.zcml:12
 msgid "A RAM cache is a volatile (in memory) cache"
@@ -1492,7 +1494,8 @@
 
 #: src/zope/app/cache/browser/configure.zcml:6
 msgid "Caches can be used to make your site run faster."
-msgstr "Caches können dazu benutzt werden, Ihren Webplatz schneller laufen zu lassen."
+msgstr ""
+"Caches können dazu benutzt werden, Ihren Webplatz schneller laufen zu lassen."
 
 #: src/zope/app/cache/browser/ramedit.pt:21
 msgid "Maximum cached entries"
@@ -1586,35 +1589,29 @@
 msgid "Text Index"
 msgstr "Text-Index"
 
-#: src/zope/app/catalog/interfaces.py:64
-#: src/zope/app/catalog/text.py:33
+#: src/zope/app/catalog/interfaces.py:64 src/zope/app/catalog/text.py:33
 #: src/zope/app/component/metadirectives.py:155
 #: src/zope/app/component/metadirectives.py:461
 msgid "Interface"
 msgstr "Schnittstelle"
 
-#: src/zope/app/catalog/interfaces.py:65
-#: src/zope/app/catalog/text.py:34
+#: src/zope/app/catalog/interfaces.py:65 src/zope/app/catalog/text.py:34
 msgid "Objects will be adapted to this interface"
 msgstr "Objekte werden zu dieser Schnittstelle adaptiert"
 
-#: src/zope/app/catalog/interfaces.py:71
-#: src/zope/app/catalog/text.py:41
+#: src/zope/app/catalog/interfaces.py:71 src/zope/app/catalog/text.py:41
 msgid "Field Name"
 msgstr "Feldname"
 
-#: src/zope/app/catalog/interfaces.py:72
-#: src/zope/app/catalog/text.py:42
+#: src/zope/app/catalog/interfaces.py:72 src/zope/app/catalog/text.py:42
 msgid "Name of the field to index"
 msgstr "Name des zu indizierenden Feldes"
 
-#: src/zope/app/catalog/interfaces.py:76
-#: src/zope/app/catalog/text.py:47
+#: src/zope/app/catalog/interfaces.py:76 src/zope/app/catalog/text.py:47
 msgid "Field Callable"
 msgstr "Feld Ausführbare"
 
-#: src/zope/app/catalog/interfaces.py:77
-#: src/zope/app/catalog/text.py:48
+#: src/zope/app/catalog/interfaces.py:77 src/zope/app/catalog/text.py:48
 msgid "If true, then the field should be called to get the value to be indexed"
 msgstr ""
 "Wenn wahr, dann sollte das Feld aufgerufen werden um den zu indizierenden "
@@ -1903,7 +1900,8 @@
 
 #: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
-msgstr "Der Registrierungsverwalter führt Buch über alle Komponenten-Registrierungen."
+msgstr ""
+"Der Registrierungsverwalter führt Buch über alle Komponenten-Registrierungen."
 
 #: src/zope/app/component/interfaces/registration.py:32
 msgid "Inactive"
@@ -1987,7 +1985,8 @@
 msgstr "Adapter-Fabrik/Fabriken"
 
 #: src/zope/app/component/metadirectives.py:171
-msgid "A list of factories (usually just one) that create the adapter instance."
+msgid ""
+"A list of factories (usually just one) that create the adapter instance."
 msgstr ""
 "Eine Liste von Fabriken (üblicherweise nur eine), die die Adapter-Instanz "
 "erzeugt."
@@ -2000,7 +1999,8 @@
 
 #: src/zope/app/component/metadirectives.py:179
 #: src/zope/app/component/metadirectives.py:241
-msgid "This attribute specifes the interface the adapter instance must provide."
+msgid ""
+"This attribute specifes the interface the adapter instance must provide."
 msgstr ""
 "Dieses Attribut spezifiziert die Schnittstelle, die von der Adapter-Instanz "
 "bereitgestellt werden muß"
@@ -2076,7 +2076,8 @@
 msgstr "Schnittstellen oder Klassen, auf die ein Abonnent angewiesen ist"
 
 #: src/zope/app/component/metadirectives.py:257
-msgid "This subscriber is only available, if the principal has this permission."
+msgid ""
+"This subscriber is only available, if the principal has this permission."
 msgstr ""
 "Der Abonennt ist nur verfügbar, wenn der Nutzungsberechtigte diese "
 "Berechtigung hat."
@@ -2124,7 +2125,8 @@
 
 #: src/zope/app/component/metadirectives.py:307
 #: src/zope/app/component/metadirectives.py:480
-msgid "Text suitable for use in the 'add content' menu of a management interface"
+msgid ""
+"Text suitable for use in the 'add content' menu of a management interface"
 msgstr "Text, der für das 'Hinzufügen'-Menü im ZMI paßt"
 
 #: src/zope/app/component/metadirectives.py:314
@@ -2656,8 +2658,8 @@
 "         In this category you will find all preferences related to the "
 "Zope         Management Interface (ZMI).         "
 msgstr ""
-"     In dieser Kategorie sind alle Vorlieben für die Zope-Verwaltungsschnittstelle "
-"(Zope Management Interface = ZMI) zu finden."
+"     In dieser Kategorie sind alle Vorlieben für die Zope-"
+"Verwaltungsschnittstelle (Zope Management Interface = ZMI) zu finden."
 
 #: src/zope/app/demo/skinpref/configure.zcml:25
 msgid "Skin Selection"
@@ -2680,7 +2682,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101 src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr "Ansicht"
 
@@ -2727,8 +2728,8 @@
 msgstr "Es gab ${num_errors} Eingabefehler."
 
 #: src/zope/app/demo/widget/browser/popup.pt:65
-#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/file/browser/file_upload.pt:50
+#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
 #: src/zope/app/component/browser/editregistration.pt:48
@@ -2737,9 +2738,9 @@
 msgstr "Auffrischen"
 
 #: src/zope/app/demo/widget/browser/popup.pt:67
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr "Abschicken"
 
@@ -2928,7 +2929,8 @@
 msgstr "TextLine-Feld, das vorhanden sein muß (also: `required = True`)"
 
 #: src/zope/app/demo/widget/interfaces/textwidget.py:53
-msgid "zope.schema.TextLine field with constraint = lambda x: x == u'constraint'."
+msgid ""
+"zope.schema.TextLine field with constraint = lambda x: x == u'constraint'."
 msgstr ""
 "TextLine-Feld, wobei die Daten die Bedingung `lambda x: x == u'constraint'` "
 "erfüllen müssen."
@@ -3032,8 +3034,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
-#: src/zope/app/cache/browser/ramedit.pt:10
 #: src/zope/app/cache/browser/ramstats.pt:11
+#: src/zope/app/cache/browser/ramedit.pt:10
 msgid "Errors"
 msgstr "Fehler"
 
@@ -3061,7 +3063,8 @@
 msgstr "Fehlerlogbericht ansehen"
 
 #: src/zope/app/error/browser/error.pt:11
-msgid "This page lists the exceptions that have occurred in this site recently."
+msgid ""
+"This page lists the exceptions that have occurred in this site recently."
 msgstr ""
 "Diese Seite listet die Ausnahmen auf, die kürzlich auf diesem Webplatz "
 "aufgetreten sind."
@@ -3070,6 +3073,12 @@
 msgid "No exceptions logged."
 msgstr "Keine Ausnahmen aufgezeichnet."
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr "Zeit"
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -3122,7 +3131,8 @@
 
 #: src/zope/app/error/browser/errorentry.pt:14
 msgid "The specified log entry was not found. It may have expired."
-msgstr "Der spezifierte Log-Eintrag wurde nicht gefunden. Er kann abgelaufen sein."
+msgstr ""
+"Der spezifierte Log-Eintrag wurde nicht gefunden. Er kann abgelaufen sein."
 
 #: src/zope/app/error/browser/errorentry.pt:31
 msgid "Request URL"
@@ -3207,8 +3217,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
-#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/container/browser/contents.pt:149
+#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr "Hinzufügen"
@@ -3270,28 +3280,27 @@
 msgid " ${width}x${height}"
 msgstr " ${width}x${height}"
 
-#: src/zope/app/file/interfaces.py:27
-#: src/zope/app/pythonpage/__init__.py:44
-#: src/zope/app/file/browser/file_add.pt:15
+#: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "Content Type"
 msgstr "Inhaltstyp"
 
 #: src/zope/app/file/interfaces.py:28
-#: src/zope/app/file/browser/file_add.pt:15
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr "Der Inhaltstyp identifiziert den Typ der Daten."
 
 #: src/zope/app/file/interfaces.py:35
-#: src/zope/app/file/browser/file_add.pt:30
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr "Daten"
 
 #: src/zope/app/file/interfaces.py:36
-#: src/zope/app/file/browser/file_add.pt:30
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr "Der eigentliche Inhalt des Objekts."
 
@@ -3323,16 +3332,6 @@
 msgid "An error occured."
 msgstr "Ein Fehler ist aufgetreten."
 
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr "Zurück"
-
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr "Nächste"
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr "Wahr"
@@ -3373,6 +3372,16 @@
 msgid "The browser:form Directive"
 msgstr "Die `browser:form`-Direktive"
 
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr "Zurück"
+
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr "Nächste"
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr "Keine Änderungen zu speichern"
@@ -3408,26 +3417,26 @@
 msgstr "%s hinzufügen"
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr "Name des Quelltextanzeige-Widgets"
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr "Löschen"
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
 msgstr "Fehlt"
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr "Ungültig"
 
@@ -3484,7 +3493,8 @@
 msgstr "Einzelheiten zu ${application_id} Anwendungsverwaltung"
 
 #: src/zope/app/generations/browser/managers.pt:18
-msgid "The database was updated to generation ${generation} for ${application}."
+msgid ""
+"The database was updated to generation ${generation} for ${application}."
 msgstr ""
 "Die Datenbank wurde auf Generation ${generation} für ${application} "
 "aktualisiert."
@@ -3567,14 +3577,30 @@
 msgstr "Hausordner anlegen"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
-msgstr "Kennzeichnet, ob ein Hausordner angelegt werden soll, wenn dieser fehlt."
+#, fuzzy
+msgid ""
+"Whether home folders should be created upon adding a assignment, if missing."
+msgstr ""
+"Kennzeichnet, ob ein Hausordner angelegt werden soll, wenn dieser fehlt."
 
 #: src/zope/app/homefolder/interfaces.py:52
+#, fuzzy
+msgid "Auto create assignment"
+msgstr "Zuordnungen"
+
+#: src/zope/app/homefolder/interfaces.py:53
+#, fuzzy
+msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr ""
+"Kennzeichnet, ob ein Hausordner angelegt werden soll, wenn dieser fehlt."
+
+#: src/zope/app/homefolder/interfaces.py:59
 msgid "Local Home Folder Role"
 msgstr "Rolle für den lokalen Hausordner"
 
-#: src/zope/app/homefolder/interfaces.py:53
+#: src/zope/app/homefolder/interfaces.py:60
 msgid ""
 "The local role that the user will have in its home folder. This role is only "
 "set on folders that are created by the manager."
@@ -3627,29 +3653,18 @@
 "Hier können Sie Nachrichten von und zu Ihrer Übersetzungsdomäne im- bzw. "
 "exportieren."
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr "Sprachen auswählen:"
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr "Dateinamen importieren:"
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr "Übesetzungsdomäne - Übersetzen"
-
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
 msgstr "Exportieren"
 
 #: src/zope/app/i18n/browser/synchronize.pt:123
 msgid "No connection could be made to remote data source."
-msgstr "Es konnte keine Verbindung mit der Fremddatenquelle hergestellt werden."
+msgstr ""
+"Es konnte keine Verbindung mit der Fremddatenquelle hergestellt werden."
 
 #: src/zope/app/i18n/browser/synchronize.pt:27
 msgid "Server URL"
@@ -3667,11 +3682,10 @@
 msgid "synchronize-button"
 msgstr "Synchronisieren"
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
-msgstr "Nachrichten-ID"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
+msgstr "Status"
 
 #: src/zope/app/i18n/browser/synchronize.py:34
 msgid "Up to Date"
@@ -3705,10 +3719,22 @@
 msgid "Delete Messages"
 msgstr "Nachrichten löschen"
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr "Sprachen auswählen:"
+
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr "Bearbeiten"
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr "Übesetzungsdomäne - Übersetzen"
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr "Neue Sprache:"
@@ -3721,6 +3747,12 @@
 msgid "filter-button"
 msgstr "Filtern"
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr "Nachrichten-ID"
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr "Nachricht bearbeiten"
@@ -3739,13 +3771,15 @@
 msgstr "Bearbeitungsformular"
 
 #: src/zope/app/i18nfile/browser/i18nfile.py:47
-msgid "This edit form allows you to make changes to the properties of this file."
+msgid ""
+"This edit form allows you to make changes to the properties of this file."
 msgstr ""
 "Dieses Bearbeitungsformular erlaubt es Ihnen, Änderungen an den "
 "Einstellungen ihrer Datei vorzunehmen."
 
 #: src/zope/app/i18nfile/browser/i18nimage.py:32
-msgid "This edit form allows you to make changes to the properties of this image."
+msgid ""
+"This edit form allows you to make changes to the properties of this image."
 msgstr ""
 "Dieses Bearbeitungsformular erlaubt es Ihnen, Änderungen an den "
 "Einstellungen ihres Bildes vorzunehmen."
@@ -3817,8 +3851,7 @@
 msgid "Object is already locked"
 msgstr "Objekt ist bereits gesperrt"
 
-#: src/zope/app/locking/adapter.py:89
-#: src/zope/app/locking/adapter.py:99
+#: src/zope/app/locking/adapter.py:89 src/zope/app/locking/adapter.py:99
 msgid "Object is not locked"
 msgstr "Objekttyp istnicht gesperrt"
 
@@ -3836,7 +3869,8 @@
 
 #: src/zope/app/locking/interfaces.py:119
 msgid "time value indicating the lock timeout from creation"
-msgstr "Zeitangabe für die Zeitüberschreitung einer Sperre nach ihrer Erzeugung"
+msgstr ""
+"Zeitangabe für die Zeitüberschreitung einer Sperre nach ihrer Erzeugung"
 
 #: src/zope/app/mail/configure.zcml:7
 msgid "send-mail-permission"
@@ -3846,8 +3880,7 @@
 msgid "Queue path"
 msgstr "Warteschlangenpfad"
 
-#: src/zope/app/mail/interfaces.py:109
-#: src/zope/app/mail/interfaces.py:118
+#: src/zope/app/mail/interfaces.py:109 src/zope/app/mail/interfaces.py:118
 msgid "Pathname of the directory used to queue mail."
 msgstr "Verzeichnispfad der Email-Warteschlange."
 
@@ -3908,7 +3941,8 @@
 
 #: src/zope/app/menus.zcml:17
 msgid "Menu of objects to be added to content folders"
-msgstr "Menü von Objekten, die als Inhalt zu dem Ordner hinzugefügt werden können"
+msgstr ""
+"Menü von Objekten, die als Inhalt zu dem Ordner hinzugefügt werden können"
 
 #: src/zope/app/menus.zcml:21
 msgid "Menu for objects to be added according to containment constraints"
@@ -3918,7 +3952,8 @@
 
 #: src/zope/app/menus.zcml:27
 msgid "Menu of objects to be added to site management folders"
-msgstr "Menü von Objekten, die Webplatzverwaltungs-Ordnern hinzugefügt werden können"
+msgstr ""
+"Menü von Objekten, die Webplatzverwaltungs-Ordnern hinzugefügt werden können"
 
 #: src/zope/app/menus.zcml:31
 msgid "Menu of database connections to be added"
@@ -4050,7 +4085,8 @@
 
 #: src/zope/app/pagelet/exceptions.py:30
 msgid "Pagelet slot interface not found."
-msgstr "Schnittstelle für den 'slot' des Seitenteils (='pagelet') nicht gefunden."
+msgstr ""
+"Schnittstelle für den 'slot' des Seitenteils (='pagelet') nicht gefunden."
 
 #: src/zope/app/pagelet/exceptions.py:37
 msgid "IPageletSlot interface not provided."
@@ -4089,7 +4125,8 @@
 
 #: src/zope/app/pageletchooser/exceptions.py:29
 msgid "Pagelet vocabulary interface not found."
-msgstr "Schnittstelle für das Seitenteil(= 'pagelet') -Vokabular nicht gefunden"
+msgstr ""
+"Schnittstelle für das Seitenteil(= 'pagelet') -Vokabular nicht gefunden"
 
 #: src/zope/app/pagetemplate/engine.py:122
 msgid ""
@@ -4153,14 +4190,14 @@
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
 #: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76 src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Bearbeiten"
 
 #: src/zope/app/pluggableauth/interfaces.py:33
 msgid "The Login/Username of the user. This value can change."
-msgstr "Eine Anmeldung (Benutzername) fuer den Nutzer. Dieser Wert kann sich ändern."
+msgstr ""
+"Eine Anmeldung (Benutzername) fuer den Nutzer. Dieser Wert kann sich ändern."
 
 #: src/zope/app/pluggableauth/interfaces.py:39
 msgid "The password for the user."
@@ -4189,8 +4226,8 @@
 "preferences. The values of this provider are used, if the           user has "
 "not made a selection yet."
 msgstr ""
-"    Sie können mit dieser Komponente die lokalen Voreinstellungen "
-"für Nutzer-Vorlieben festlegen. Die Angaben dieses Lieferanten werden verwendet, "
+"    Sie können mit dieser Komponente die lokalen Voreinstellungen für Nutzer-"
+"Vorlieben festlegen. Die Angaben dieses Lieferanten werden verwendet, "
 "solange der Nutzer keine Auswahl getroffen hat."
 
 #: src/zope/app/preference/menu.pt:5
@@ -4354,7 +4391,8 @@
 
 #: src/zope/app/publisher/interfaces/browser.py:144
 msgid "The menu id of the menu that describes the sub-menu below this item."
-msgstr "Die Menü-ID eines Menüs, das die Untermenüs unter diesem Eintrag beschreibt."
+msgstr ""
+"Die Menü-ID eines Menüs, das die Untermenüs unter diesem Eintrag beschreibt."
 
 #: src/zope/app/publisher/interfaces/browser.py:51
 #: src/zope/app/schemacontent/interfaces.py:45
@@ -4461,7 +4499,8 @@
 msgstr "Test"
 
 #: src/zope/app/rdb/browser/configure.zcml:5
-msgid "Database Adapters are used to connect to external       relational databases."
+msgid ""
+"Database Adapters are used to connect to external       relational databases."
 msgstr ""
 "Datenbankadapter werden benutzt, um Verbindungen zu externen relationalen "
 "Datenbanken herzustellen."
@@ -4513,7 +4552,8 @@
 
 #: src/zope/app/rdb/browser/rdbtestsql.pt:14
 msgid "Here you can enter an SQL statement, so you can test the connection."
-msgstr "Sie können hier eine SQL-Abfrage eingeben, um die Verbindung zu testen."
+msgstr ""
+"Sie können hier eine SQL-Abfrage eingeben, um die Verbindung zu testen."
 
 #: src/zope/app/rdb/browser/rdbtestsql.pt:19
 msgid "Query"
@@ -4585,22 +4625,11 @@
 msgid "Recorded Sessions"
 msgstr "Aufgezeichnete Sitzungen"
 
-#: src/zope/app/recorder/sessions.pt:15
-#: src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr "Zeit"
-
 # Default: "Methods"
 #: src/zope/app/recorder/sessions.pt:16
 msgid "Method"
 msgstr "Methode"
 
-#: src/zope/app/recorder/sessions.pt:18
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr "Status"
-
 #: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr "Funktionalen DocTest erzeugen"
@@ -4800,8 +4829,7 @@
 msgid "BytesLine Field"
 msgstr "Feld für Byteszeile"
 
-#: src/zope/app/schema/fields.zcml:114
-#: src/zope/app/schema/fieldforms.zcml:7
+#: src/zope/app/schema/fields.zcml:114 src/zope/app/schema/fieldforms.zcml:7
 msgid "Text Field"
 msgstr "Textfeld"
 
@@ -4809,18 +4837,15 @@
 msgid "Text Line Field"
 msgstr "Feld Textzeile"
 
-#: src/zope/app/schema/fields.zcml:140
-#: src/zope/app/schema/fieldforms.zcml:59
+#: src/zope/app/schema/fields.zcml:140 src/zope/app/schema/fieldforms.zcml:59
 msgid "Boolean Field"
 msgstr "Boolsches Feld"
 
-#: src/zope/app/schema/fields.zcml:151
-#: src/zope/app/schema/fieldforms.zcml:85
+#: src/zope/app/schema/fields.zcml:151 src/zope/app/schema/fieldforms.zcml:85
 msgid "Integer Field"
 msgstr "Ganzahlfeld"
 
-#: src/zope/app/schema/fields.zcml:163
-#: src/zope/app/schema/fieldforms.zcml:111
+#: src/zope/app/schema/fields.zcml:163 src/zope/app/schema/fieldforms.zcml:111
 msgid "Float Field"
 msgstr "Fließkommazahlenfeld"
 
@@ -4844,8 +4869,7 @@
 msgid "Dict Field"
 msgstr "Dict-Feld"
 
-#: src/zope/app/schema/fields.zcml:232
-#: src/zope/app/schema/fieldforms.zcml:137
+#: src/zope/app/schema/fields.zcml:232 src/zope/app/schema/fieldforms.zcml:137
 msgid "Datetime Field"
 msgstr "Zeitdatumfeld"
 
@@ -5035,11 +5059,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr "Sie sind nun als  ${UserTitle} eingelogged."
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr "Zurück zur Hauptseite."
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr "Login erfolgreich!"
@@ -5056,6 +5075,11 @@
 msgid "You cancelled the login procedure."
 msgstr "Sie haben den Loginprozess abgebrochen. "
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr "Zurück zur Hauptseite."
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr "Ausloggen erfolgreich!"
@@ -5530,13 +5554,11 @@
 msgid "Redo!"
 msgstr "Wiederherstellen!"
 
-#: src/zope/app/undo/configure.zcml:117
-#: src/zope/app/undo/undo_more.pt:6
+#: src/zope/app/undo/configure.zcml:117 src/zope/app/undo/undo_more.pt:6
 msgid "Undo more"
 msgstr "Mehr rückgängig"
 
-#: src/zope/app/undo/configure.zcml:125
-#: src/zope/app/undo/undo_all.pt:6
+#: src/zope/app/undo/configure.zcml:125 src/zope/app/undo/undo_all.pt:6
 msgid "Undo all"
 msgstr "Alles rückgängig"
 
@@ -5569,8 +5591,7 @@
 msgid "Undo!"
 msgstr "Rückgängig!"
 
-#: src/zope/app/undo/undo_all.pt:11
-#: src/zope/app/undo/undo_more.pt:11
+#: src/zope/app/undo/undo_all.pt:11 src/zope/app/undo/undo_more.pt:11
 msgid ""
 "Select one or more transactions from the list below and click the button "
 "below. Please be aware that you may only undo a transaction if the object "
@@ -5637,8 +5658,7 @@
 msgid "heading-description"
 msgstr "Beschreibung"
 
-#: src/zope/app/undo/undo_macros.pt:62
-#: src/zope/app/undo/undo_macros.pt:69
+#: src/zope/app/undo/undo_macros.pt:62 src/zope/app/undo/undo_macros.pt:69
 #: src/zope/app/undo/undo_macros.pt:76 src/zope/app/undo/undo_macros.pt:87
 msgid "label-not-available"
 msgstr "-"
@@ -5688,7 +5708,8 @@
 msgstr "Eingebucht"
 
 #: src/zope/app/versioncontrol/interfaces.py:226
-msgid "id of the effective user at the time the bookkeeping information was created"
+msgid ""
+"id of the effective user at the time the bookkeeping information was created"
 msgstr ""
 "Kennung des tatsächlichen Benutzers zu dem Zeitpunkt, als die Protokolldaten "
 "erzeugt wurden"
@@ -5722,7 +5743,8 @@
 msgstr "Aktualisiert"
 
 #: src/zope/app/versioncontrol/interfaces.py:254
-msgid "Message provided by the user at the time of the action.  This may be empty."
+msgid ""
+"Message provided by the user at the time of the action.  This may be empty."
 msgstr ""
 "Vom Benutzerzum Zeitpunkt der Aktion bereitgestellte Nachricht. Sie kann "
 "leer sein."
@@ -6125,19 +6147,18 @@
 msgid "If true, the field's value cannot be changed."
 msgstr "Wenn wahr kann der Wert dieses Feldes nicht geändert werden."
 
-#: src/zope/schema/interfaces.py:126
-#: src/zope/schema/interfaces.py:266
+#: src/zope/schema/interfaces.py:126 src/zope/schema/interfaces.py:266
 #: src/zope/schema/interfaces.py:315
 msgid "Default Value"
 msgstr "Vorgegebener Wert"
 
-#: src/zope/schema/interfaces.py:127
-#: src/zope/schema/interfaces.py:267
+#: src/zope/schema/interfaces.py:127 src/zope/schema/interfaces.py:267
 #: src/zope/schema/interfaces.py:316
 msgid ""
 "The field default value may be None or a legal\n"
 "                        field value"
-msgstr "Der \"default\" Wert des Feldes kann None oder ein legaler Feldwert sein"
+msgstr ""
+"Der \"default\" Wert des Feldes kann None oder ein legaler Feldwert sein"
 
 #: src/zope/schema/interfaces.py:132
 msgid "Missing Value"
@@ -6173,13 +6194,11 @@
 "       (Felder in unterschiedlichen Arbeitsgängen können die gleiche \n"
 "       Ordnungsnummer haben.)"
 
-#: src/zope/schema/interfaces.py:220
-#: src/zope/schema/interfaces.py:303
+#: src/zope/schema/interfaces.py:220 src/zope/schema/interfaces.py:303
 msgid "Start of the range"
 msgstr "Anfang der Auswahl"
 
-#: src/zope/schema/interfaces.py:226
-#: src/zope/schema/interfaces.py:309
+#: src/zope/schema/interfaces.py:226 src/zope/schema/interfaces.py:309
 msgid "End of the range (excluding the value itself)"
 msgstr "Ende der Auswahl (ausschließlich dem Wert selbst)"
 
@@ -6223,7 +6242,8 @@
 msgstr "Falscher Typ für Behälterinhalt"
 
 #: src/zope/schema/interfaces.py:380
-msgid "Field value items must conform to the given type, expressed via a Field."
+msgid ""
+"Field value items must conform to the given type, expressed via a Field."
 msgstr "Feldwerte müssen sich dem Typ dieses Feldes entsprechen."
 
 #: src/zope/schema/interfaces.py:384
@@ -6316,150 +6336,112 @@
 
 #: src/zope/security/interfaces.py:282
 msgid "List of ids of groups the principal belongs to"
-msgstr "Liste der IDs derjenigen Gruppen, zu den der Nutzungsberechtigte gehört."
+msgstr ""
+"Liste der IDs derjenigen Gruppen, zu den der Nutzungsberechtigte gehört."
 
 #: src/zope/security/interfaces.py:295
 msgid "Id as which this permission will be known and used."
 msgstr "ID, unter der diese Berechtigung bekannt sein und benutzt werden wird."
 
-#: src/zwiki/browser/configure.zcml:109
-#: src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr "Eltern"
+#~ msgid "Transaction API"
+#~ msgstr "Transaktions-API"
 
-#: src/zwiki/browser/configure.zcml:134
-#: src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
-msgid "Comment"
-msgstr "Kommentar"
+#~ msgid "Parents"
+#~ msgstr "Eltern"
 
-#: src/zwiki/browser/configure.zcml:143
-msgid "A Comment"
-msgstr "Ein Kommentar"
+#~ msgid "Comment"
+#~ msgstr "Kommentar"
 
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr "Menü für Wikiseiten-bezogene Aktionen"
+#~ msgid "A Comment"
+#~ msgstr "Ein Kommentar"
 
-#: src/zwiki/browser/configure.zcml:168
-msgid "Table of Contents"
-msgstr "Inhaltsverzeichnis"
+#~ msgid "Menu for Wiki Page related actions."
+#~ msgstr "Menü für Wikiseiten-bezogene Aktionen"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr "Wiki"
+#~ msgid "Table of Contents"
+#~ msgstr "Inhaltsverzeichnis"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr "Ein Wiki"
+#~ msgid "Wiki"
+#~ msgstr "Wiki"
 
-#: src/zwiki/browser/configure.zcml:24
-#: src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr "Inhaltsverz."
+#~ msgid "A Wiki"
+#~ msgstr "Ein Wiki"
 
-#: src/zwiki/browser/configure.zcml:32
-#: src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr "Suchen"
+#~ msgid "TOC"
+#~ msgstr "Inhaltsverz."
 
-#: src/zwiki/browser/configure.zcml:44
-#: src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163 src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr "Abonnements"
+#~ msgid "Search"
+#~ msgstr "Suchen"
 
-#: src/zwiki/browser/configure.zcml:76
-msgid "Change Wiki Page"
-msgstr "Wiki-Seite ändern"
+#~ msgid "Subscriptions"
+#~ msgstr "Abonnements"
 
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr "Wiki hinzufügen"
+#~ msgid "Change Wiki Page"
+#~ msgstr "Wiki-Seite ändern"
 
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr "Wiki-Benutzer"
+#~ msgid "Add Wiki"
+#~ msgstr "Wiki hinzufügen"
 
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr "Wiki-Besucher, die nur betrachten und kommentieren dürfen."
+#~ msgid "Wiki User"
+#~ msgstr "Wiki-Benutzer"
 
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr "Wiki-Seite hinzufügen"
+#~ msgid "Wiki visitors, which can only view and comment on wikis."
+#~ msgstr "Wiki-Besucher, die nur betrachten und kommentieren dürfen."
 
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr "Wiki-Seite"
+#~ msgid "A Wiki Page"
+#~ msgstr "Wiki-Seite hinzufügen"
 
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr "Ein Wiki-Seiten-Kommentar"
+#~ msgid "Wiki Page"
+#~ msgstr "Wiki-Seite"
 
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr "Wikiseiten-Kommentar"
+#~ msgid "A Wiki Page Comment"
+#~ msgstr "Ein Wiki-Seiten-Kommentar"
 
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr "Der Wiki-Editor kann Wikis erstellen und bearbeiten."
+#~ msgid "Wiki Page Comment"
+#~ msgstr "Wikiseiten-Kommentar"
 
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr "Wiki-Editor"
+#~ msgid "The Wiki Editor can create and edit wikis."
+#~ msgstr "Der Wiki-Editor kann Wikis erstellen und bearbeiten."
 
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr "Wiki-Administrator"
+#~ msgid "Wiki Editor"
+#~ msgstr "Wiki-Editor"
 
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr "Der Wiki-Administrator kann Wiki-Seiten komplett verwalten."
+#~ msgid "Wiki Administrator"
+#~ msgstr "Wiki-Administrator"
 
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr "Wiki-Seite ansehen"
+#~ msgid "The Wiki Admin can fully manage wiki pages."
+#~ msgstr "Der Wiki-Administrator kann Wiki-Seiten komplett verwalten."
 
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr "Wiki-Seite ansehen"
+#~ msgid "View Wiki Page"
+#~ msgstr "Wiki-Seite ansehen"
 
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr "Wiki-Seite kommentieren"
+#~ msgid "View a Wiki Page"
+#~ msgstr "Wiki-Seite ansehen"
 
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr "Ein Kommentar zu einer Wiki-Seite abgeben"
+#~ msgid "Comment on Wiki Page"
+#~ msgstr "Wiki-Seite kommentieren"
 
-#: src/zwiki/configure.zcml:47
-#: src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr "Wiki-Seite hinzufügen"
+#~ msgid "Make a comment on Wiki Page"
+#~ msgstr "Ein Kommentar zu einer Wiki-Seite abgeben"
 
-#: src/zwiki/configure.zcml:56
-msgid "Edit Wiki Page"
-msgstr "Wiki-Seite bearbeiten"
+#~ msgid "Add Wiki Page"
+#~ msgstr "Wiki-Seite hinzufügen"
 
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr "Wiki-Seite löschen"
+#~ msgid "Edit Wiki Page"
+#~ msgstr "Wiki-Seite bearbeiten"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr "Wiki-Seite neu zuordnen"
+#~ msgid "Delete Wiki Page"
+#~ msgstr "Wiki-Seite löschen"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr "Wiki-Seite neu zuordnen"
+#~ msgid "Reparent Wiki Page"
+#~ msgstr "Wiki-Seite neu zuordnen"
 
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr "Minimale Wikiseiten-Behälter-Implementation"
+#~ msgid "Reparent a Wiki Page"
+#~ msgstr "Wiki-Seite neu zuordnen"
 
+#~ msgid "Minimal Wiki Page Container implementation "
+#~ msgstr "Minimale Wikiseiten-Behälter-Implementation"
+
 #~ msgid "Id Picker"
 #~ msgstr "ID-Lieferant"
 
@@ -6727,4 +6709,3 @@
 #~ "Anwendungsserver-Entwickler nicht das einzige Publikum für Zope 3. "
 #~ "Sogenannte \"Skripter\" sind Inline Code von anderen Technologien wie PHP "
 #~ "gewohnt. Inline Code entspricht daher ihrem Denken mehr."
-

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/es/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/es/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/es/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Zope X3 Pre-M4\n"
-"POT-Creation-Date: Fri Apr 01 19:40:34 2005\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: 2003-08-06 11:22-0500\n"
 "Last-Translator: Philipp von Weitershausen\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -122,7 +122,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:211
-msgid "Form Parse"
+msgid "Form Parser"
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:22
@@ -241,33 +241,28 @@
 msgstr "Un Rol Persistente"
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-#, fuzzy
-msgid "Transaction API"
-msgstr "Transiciones"
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 #, fuzzy
 msgid "Connection Management"
 msgstr "Nombre de la conexión"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 #, fuzzy
 msgid "Sub-Transactions"
 msgstr "Transiciones"
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 #, fuzzy
 msgid "Schema Fields"
 msgstr "Esquema"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 #, fuzzy
 msgid "Interfaces and Schemas"
@@ -287,7 +282,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:68
-#: src/zope/app/apidoc/ifacemodule/index.pt:275
+#: src/zope/app/apidoc/ifacemodule/index.pt:280
 msgid "Factories"
 msgstr "Fábricas"
 
@@ -401,17 +396,6 @@
 msgid "Attributes/Properties"
 msgstr ""
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr "tipo:"
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr "Valor:"
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -444,6 +428,17 @@
 msgid "Documentation String"
 msgstr "Texto de documentación"
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr "tipo:"
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr "Valor:"
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 #, fuzzy
 msgid "Directly provided interfaces"
@@ -547,12 +542,12 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 #, fuzzy
 msgid "<subscription>"
 msgstr "Suscripciones"
 
-#: src/zope/app/apidoc/component.py:202 src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr ""
 
@@ -585,6 +580,16 @@
 msgid "zope.app.apidoc.UseAPIDoc"
 msgstr ""
 
+#: src/zope/app/apidoc/configure.zcml:68
+msgid "API Doc Tool"
+msgstr ""
+
+#: src/zope/app/apidoc/configure.zcml:68
+msgid ""
+"          These are all the preferences related to viewing the API          "
+"documtation."
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:13
 #, fuzzy
 msgid "(line ${line})"
@@ -595,6 +600,27 @@
 msgid "(name: ${name})"
 msgstr "Nombre de la base de datos: ${name}"
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+#, fuzzy
+msgid "registered:"
+msgstr "Registrado"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr "requiere:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr "No interfaz requirido."
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 #, fuzzy
 msgid "No interface provided."
@@ -609,7 +635,7 @@
 msgid "Class:"
 msgstr "Clase:"
 
-#: src/zope/app/apidoc/ifacemodule/configure.zcml:70
+#: src/zope/app/apidoc/ifacemodule/configure.zcml:69
 #, fuzzy
 msgid "Interface Details"
 msgstr "Campo de Interfaz"
@@ -692,11 +718,11 @@
 msgid "There are no adapters registered for this interface."
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:270
+#: src/zope/app/apidoc/ifacemodule/index.pt:275
 msgid "Other Information"
 msgstr "Otras informaciones"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:277
+#: src/zope/app/apidoc/ifacemodule/index.pt:282
 msgid "A list of factories that create objects implementing this interface."
 msgstr ""
 
@@ -705,15 +731,15 @@
 msgid "Base interfaces"
 msgstr "Interfaces"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:292
+#: src/zope/app/apidoc/ifacemodule/index.pt:297
 msgid "A list of utilities that are are registered to provide this interface."
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:305
+#: src/zope/app/apidoc/ifacemodule/index.pt:310
 msgid "Classes"
 msgstr "Clases"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:307
+#: src/zope/app/apidoc/ifacemodule/index.pt:312
 msgid ""
 "A list of classes that implement this interface. This might duplicate the "
 "entries in Utilities."
@@ -752,31 +778,10 @@
 msgid "Interface Finder:"
 msgstr "Campo de Interfaz"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-#, fuzzy
-msgid "registered:"
-msgstr "Registrado"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr "Tipo de presentación:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr "requiere:"
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr "No interfaz requirido."
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr ""
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 msgid "layer:"
 msgstr ""
@@ -794,15 +799,6 @@
 msgid "Permission:"
 msgstr "Permisos:"
 
-#: src/zope/app/apidoc/preference/configure.zcml:43
-msgid "User Preferences API"
-msgstr ""
-
-#: src/zope/app/apidoc/preference/menu.pt:5
-#, fuzzy
-msgid "Preferences"
-msgstr "Codificación preferida"
-
 #: src/zope/app/apidoc/typemodule/type.py:100
 #, fuzzy
 msgid "Interface Types"
@@ -821,16 +817,20 @@
 msgstr ""
 
 #: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:58
 msgid "n/a"
 msgstr ""
 
-#: src/zope/app/apidoc/utilitymodule/index.pt:19
+#: src/zope/app/apidoc/utilitymodule/index.pt:12
+#, fuzzy
+msgid "(Name: \"${name}\")"
+msgstr "Nombre de la base de datos: ${name}"
+
+#: src/zope/app/apidoc/utilitymodule/index.pt:20
 msgid "Component:"
 msgstr "Componente:"
 
 #: src/zope/app/apidoc/utilitymodule/utilitymodule.py:87
-#: src/zope/app/apidoc/ifacemodule/index.pt:290
+#: src/zope/app/apidoc/ifacemodule/index.pt:295
 msgid "Utilities"
 msgstr "Herramientas"
 
@@ -912,84 +912,90 @@
 "Namespaces that are not full URLs start with \"http://namespaces.zope.org/\"."
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:10
-msgid "Server Control"
-msgstr "Control de servidor"
-
-#: src/zope/app/applicationcontrol/browser/configure.zcml:15
+#: src/zope/app/applicationcontrol/browser/configure.zcml:25
 msgid "Runtime Information"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:24
+#: src/zope/app/applicationcontrol/browser/configure.zcml:29
+msgid "Server Control"
+msgstr "Control de servidor"
+
+#: src/zope/app/applicationcontrol/browser/configure.zcml:35
 msgid "ZODB Control"
 msgstr "Control de ZODB"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:41
+#: src/zope/app/applicationcontrol/browser/configure.zcml:52
 msgid "Manage Process"
 msgstr "Administrar el proceso"
 
 #: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:11
+msgid "Uptime"
+msgstr ""
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:16
+msgid "System platform"
+msgstr "Plataforma del sistema"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:21
 msgid "Zope version"
 msgstr "Versión Zope"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:15
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:26
 msgid "Python version"
 msgstr "Versión Python"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:19
-msgid "System platform"
-msgstr "Plataforma del sistema"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
+msgid "Command line"
+msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:23
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:36
 msgid "Preferred encoding"
 msgstr "Codificación preferida"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:27
-msgid "FileSytem encoding"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
+msgid "Zope Runtime Information"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
-msgid "Command line"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:41
+msgid "FileSytem encoding"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:35
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:46
 msgid "Process id"
 msgstr "ID del proceso"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:39
-msgid "Uptime"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:51
+msgid "Python path"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
-msgid "Zope Runtime Information"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:37
+#: src/zope/app/applicationcontrol/runtimeinfo.py:71
+msgid "Unavailable"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:43
-msgid "Python path"
-msgstr ""
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:47
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:67
 msgid "${days} day(s) ${hours}:${minutes}:${seconds}"
 msgstr "${days} dias ${hours}:${minutes}:${seconds}"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:68
-msgid "Could not retrieve runtime information."
-msgstr ""
+#: src/zope/app/applicationcontrol/browser/server-control.pt:10
+#, fuzzy
+msgid "Shutdown time"
+msgstr "Apagar servidor"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:11
+#: src/zope/app/applicationcontrol/browser/server-control.pt:14
 msgid "seconds"
 msgstr "secundos"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:13
+#: src/zope/app/applicationcontrol/browser/server-control.pt:15
 msgid ""
 "If you specify a time of 0 seconds, then the server will do a hard shutdown."
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:18
+#: src/zope/app/applicationcontrol/browser/server-control.pt:24
 msgid "Restart server"
 msgstr "Reiniciar servidor"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:21
+#: src/zope/app/applicationcontrol/browser/server-control.pt:27
 msgid "Shutdown server"
 msgstr "Apagar servidor"
 
@@ -997,10 +1003,6 @@
 msgid "Zope Stub Server Controller"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:9
-msgid "Shutdown time:"
-msgstr ""
-
 #: src/zope/app/applicationcontrol/browser/servercontrol.py:34
 msgid "You restarted the server."
 msgstr "Ha reiniciado el servidor"
@@ -1013,40 +1015,44 @@
 msgid "Domain"
 msgstr "Dominio"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr "Idioma"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr "Archivos"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 msgid "reload-button"
 msgstr "Actualizar"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
 msgstr ""
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
-msgid "Name of database: ${name}"
+#, fuzzy
+msgid "Name of database"
 msgstr "Nombre de la base de datos: ${name}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:15
-msgid "Size of database: ${size}"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:16
+#, fuzzy
+msgid "Size of database"
 msgstr "Tamaño de la base de datos: ${size}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:25
-msgid "Keep up to:"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:28
+msgid "Keep up to"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:29
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:32
 msgid "days"
 msgstr "dias"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:34
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:37
 msgid "pack-button"
 msgstr "Empacar"
 
@@ -1376,8 +1382,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
-#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 #: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
+#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 msgid "save-changes-button"
 msgstr "Guardar cambios"
 
@@ -1386,22 +1392,21 @@
 msgstr "Invalidar el caché"
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
-#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/cache/browser/ramstats.pt:38
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:52
+#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1458,7 +1463,7 @@
 msgstr "Puede configurar el Caché RAM aquí."
 
 #: src/zope/app/cache/browser/ramstats.pt:21
-#: src/zope/app/recorder/sessions.pt:23
+#: src/zope/app/recorder/sessions.pt:17
 msgid "Path"
 msgstr "Localización"
 
@@ -1826,18 +1831,23 @@
 msgid "The interface provided by the utility"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:104
+#: src/zope/app/component/interfaces/registration.py:100
+#, fuzzy
+msgid "The interface the component provides through this registration."
+msgstr "Nueva registración de conexiones"
+
+#: src/zope/app/component/interfaces/registration.py:106
 msgid "The permission needed to use the component"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:212
+#: src/zope/app/component/interfaces/registration.py:214
 #: src/zope/app/component/configure.zcml:9
 #: src/zope/app/component/browser/editregistration.pt:4
 #: src/zope/app/component/browser/editregistration.pt:11
 msgid "Registration Manager"
 msgstr "Administrador de registraciones"
 
-#: src/zope/app/component/interfaces/registration.py:213
+#: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
 msgstr ""
 
@@ -1854,26 +1864,21 @@
 msgid "Registration status"
 msgstr "Estado de registraciones"
 
-#: src/zope/app/component/interfaces/registration.py:92
+#: src/zope/app/component/interfaces/registration.py:94
 #, fuzzy
 msgid "Registration Component"
 msgstr "Registración hecha."
 
-#: src/zope/app/component/interfaces/registration.py:93
+#: src/zope/app/component/interfaces/registration.py:95
 #, fuzzy
 msgid "The component the registration is for."
 msgstr "Nueva registración de conexiones"
 
-#: src/zope/app/component/interfaces/registration.py:97
+#: src/zope/app/component/interfaces/registration.py:99
 #, fuzzy
 msgid "Component Interface"
 msgstr "Interfaces implementados"
 
-#: src/zope/app/component/interfaces/registration.py:98
-#, fuzzy
-msgid "The interface the component provides through this registration."
-msgstr "Nueva registración de conexiones"
-
 #: src/zope/app/component/metadirectives.py:112
 msgid "View attributes that are also allowed if the user has permission."
 msgstr ""
@@ -2515,6 +2520,21 @@
 msgid "File name of the data file."
 msgstr ""
 
+#: src/zope/app/demo/skinpref/configure.zcml:15
+#, fuzzy
+msgid "ZMI Settings"
+msgstr "Ajuste"
+
+#: src/zope/app/demo/skinpref/configure.zcml:15
+msgid ""
+"         In this category you will find all preferences related to the "
+"Zope         Management Interface (ZMI).         "
+msgstr ""
+
+#: src/zope/app/demo/skinpref/configure.zcml:25
+msgid "Skin Selection"
+msgstr ""
+
 #: src/zope/app/demo/widget/browser/boolwidget.zcml:21
 #, fuzzy
 msgid "BoolWidget Index"
@@ -2524,7 +2544,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101 src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr "Vista"
 
@@ -2570,27 +2589,24 @@
 
 #: src/zope/app/demo/widget/browser/popup.pt:36
 #: src/zope/app/schema/browser/schema_edit.pt:21
-#: src/zope/app/apidoc/preference/edit.pt:78
 #: src/zope/app/form/browser/add.pt:23 src/zope/app/form/browser/edit.pt:24
 msgid "There are ${num_errors} input errors."
 msgstr ""
 
 #: src/zope/app/demo/widget/browser/popup.pt:65
-#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/file/browser/file_upload.pt:50
+#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
-#: src/zope/app/apidoc/preference/edit.pt:113
 #: src/zope/app/component/browser/editregistration.pt:48
 #: src/zope/app/form/browser/add.pt:51 src/zope/app/form/browser/edit.pt:51
 msgid "refresh-button"
 msgstr "Actualizar"
 
 #: src/zope/app/demo/widget/browser/popup.pt:67
-#: src/zope/app/apidoc/preference/edit.pt:115
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr "Someter"
 
@@ -2891,8 +2907,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
-#: src/zope/app/cache/browser/ramedit.pt:10
 #: src/zope/app/cache/browser/ramstats.pt:11
+#: src/zope/app/cache/browser/ramedit.pt:10
 msgid "Errors"
 msgstr "Errores"
 
@@ -2926,6 +2942,12 @@
 msgid "No exceptions logged."
 msgstr ""
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr "Tiempo"
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -3056,7 +3078,7 @@
 msgid "Change a file"
 msgstr "Cambiar archivo"
 
-#: src/zope/app/file/browser/file.py:167
+#: src/zope/app/file/browser/file.py:179
 #: src/zope/app/form/browser/editview.py:114
 msgid "Updated on ${date_time}"
 msgstr "Los datos han sido cambiado ${date_time}"
@@ -3064,8 +3086,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
-#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/container/browser/contents.pt:149
+#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr "Añadir"
@@ -3130,23 +3152,26 @@
 msgstr " ${width}x${height}"
 
 #: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
-#: src/zope/app/file/browser/file_add.pt:15
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "Content Type"
 msgstr "Tipo de contenido"
 
-#: src/zope/app/file/interfaces.py:28 src/zope/app/file/browser/file_add.pt:15
+#: src/zope/app/file/interfaces.py:28
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr "El tipo de contenido identifica el tipo de datos."
 
-#: src/zope/app/file/interfaces.py:35 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:35
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr "Datos"
 
-#: src/zope/app/file/interfaces.py:36 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:36
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr "El contenido real de este objeto."
 
@@ -3178,16 +3203,6 @@
 msgid "An error occured."
 msgstr "Ocurrió un error."
 
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr "Anterior"
-
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr "Siguiente"
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr ""
@@ -3232,6 +3247,16 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr "Anterior"
+
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr "Siguiente"
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr "No hay cambios para guardar"
@@ -3267,26 +3292,26 @@
 msgstr "Añadir %s"
 
 # Default: "Selected"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr ""
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr ""
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
 msgstr ""
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr ""
 
@@ -3430,14 +3455,26 @@
 msgstr "Carpeta de páginas"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
+msgid ""
+"Whether home folders should be created upon adding a assignment, if missing."
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:52
+#, fuzzy
+msgid "Auto create assignment"
+msgstr "Argumentos"
+
+#: src/zope/app/homefolder/interfaces.py:53
+msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:59
 msgid "Local Home Folder Role"
 msgstr ""
 
-#: src/zope/app/homefolder/interfaces.py:53
+#: src/zope/app/homefolder/interfaces.py:60
 msgid ""
 "The local role that the user will have in its home folder. This role is only "
 "set on folders that are created by the manager."
@@ -3463,7 +3500,7 @@
 msgstr ""
 
 #: src/zope/app/i18n/browser/configure.zcml:5
-#: src/zope/app/applicationcontrol/browser/configure.zcml:32
+#: src/zope/app/applicationcontrol/browser/configure.zcml:43
 #: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:4
 msgid "Translation Domains"
 msgstr "Dominios de traducción"
@@ -3484,22 +3521,10 @@
 msgid "Here you can export and import messages from your Translation Domain."
 msgstr "Aquí puede exportar y importar mensajes de su Dominio de Traducción."
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr "Seleccione idiomas:"
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr "Importe nombre del archivo:"
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr "Dominio de traducción ' Traducir"
-
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
 msgstr "Exportar"
@@ -3525,11 +3550,10 @@
 msgid "synchronize-button"
 msgstr "Sincornizar"
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
-msgstr "Id del mensaje"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
+msgstr "Estado"
 
 #: src/zope/app/i18n/browser/synchronize.py:34
 msgid "Up to Date"
@@ -3563,10 +3587,22 @@
 msgid "Delete Messages"
 msgstr "Borrar mensajes"
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr "Seleccione idiomas:"
+
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr "Editar"
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr "Dominio de traducción ' Traducir"
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr "Nuevo idioma:"
@@ -3579,6 +3615,12 @@
 msgid "filter-button"
 msgstr "Filtrar"
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr "Id del mensaje"
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr "Editar mensaje"
@@ -3997,7 +4039,6 @@
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
 #: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76 src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Editar"
@@ -4010,6 +4051,36 @@
 msgid "The password for the user."
 msgstr ""
 
+#: src/zope/app/preference/configure.zcml:116
+msgid "User Preferences API"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:30
+#, fuzzy
+msgid "User Preferences"
+msgstr "Codificación preferida"
+
+#: src/zope/app/preference/configure.zcml:70
+msgid "A Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:70
+#: src/zope/app/preference/configure.zcml:77
+msgid "Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:77
+msgid ""
+"           This component lets you define the local default user           "
+"preferences. The values of this provider are used, if the           user has "
+"not made a selection yet."
+msgstr ""
+
+#: src/zope/app/preference/menu.pt:5
+#, fuzzy
+msgid "Preferences"
+msgstr "Codificación preferida"
+
 #: src/zope/app/presentation/browser.zcml:15
 msgid "Change page"
 msgstr "Cambiar página"
@@ -4375,43 +4446,28 @@
 msgid "Recorded Sessions"
 msgstr "Permisos Negados"
 
-#: src/zope/app/recorder/sessions.pt:12
-msgid "There are no recorded requests that pass your filter."
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:21 src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr "Tiempo"
-
-#: src/zope/app/recorder/sessions.pt:22
+#: src/zope/app/recorder/sessions.pt:16
 #, fuzzy
 msgid "Method"
 msgstr "Métodos"
 
-#: src/zope/app/recorder/sessions.pt:24
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr "Estado"
-
-#: src/zope/app/recorder/sessions.pt:4
-#, fuzzy
-msgid "Recorded HTTP Sessions"
-msgstr "Permisos Negados"
-
-#: src/zope/app/recorder/sessions.pt:42
+#: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:44
+#: src/zope/app/recorder/sessions.pt:38
 msgid "Clear All"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:64
+#: src/zope/app/recorder/sessions.pt:57
 #, fuzzy
 msgid "Filter"
 msgstr "Archivo"
 
+#: src/zope/app/recorder/sessions.pt:6
+msgid "There are no recorded requests that pass your filter."
+msgstr ""
+
 #: src/zope/app/renderer/configure.zcml:14
 msgid "Plain Text Source"
 msgstr ""
@@ -4817,11 +4873,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr ""
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr "Regresar a la página principal."
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr ""
@@ -4838,6 +4889,11 @@
 msgid "You cancelled the login procedure."
 msgstr ""
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr "Regresar a la página principal."
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr ""
@@ -6040,136 +6096,41 @@
 msgid "Id as which this permission will be known and used."
 msgstr ""
 
-#: src/zwiki/browser/configure.zcml:109 src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr ""
+#, fuzzy
+#~ msgid "Transaction API"
+#~ msgstr "Transiciones"
 
-#: src/zwiki/browser/configure.zcml:134 src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
-msgid "Comment"
-msgstr ""
+#, fuzzy
+#~ msgid "Recorded HTTP Sessions"
+#~ msgstr "Permisos Negados"
 
-#: src/zwiki/browser/configure.zcml:143
-msgid "A Comment"
-msgstr ""
+#~ msgid "Search"
+#~ msgstr "Buscar"
 
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr ""
+#~ msgid "Subscriptions"
+#~ msgstr "Suscripciones"
 
-#: src/zwiki/browser/configure.zcml:168
-msgid "Table of Contents"
-msgstr ""
+#~ msgid "Change Wiki Page"
+#~ msgstr "Cambiar página Wiki"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr ""
+#~ msgid "Wiki User"
+#~ msgstr "Usuario de Wiki"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr ""
+#~ msgid "Wiki Page"
+#~ msgstr "Página Wiki"
 
-#: src/zwiki/browser/configure.zcml:24 src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr ""
+#~ msgid "Wiki Editor"
+#~ msgstr "Editor de Wiki"
 
-#: src/zwiki/browser/configure.zcml:32 src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr "Buscar"
+#~ msgid "Add Wiki Page"
+#~ msgstr "Añadir una Pagina Wiki"
 
-#: src/zwiki/browser/configure.zcml:44 src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163 src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr "Suscripciones"
+#~ msgid "Edit Wiki Page"
+#~ msgstr "Editar una Pagina Wiki"
 
-#: src/zwiki/browser/configure.zcml:76
-msgid "Change Wiki Page"
-msgstr "Cambiar página Wiki"
+#~ msgid "Delete Wiki Page"
+#~ msgstr "Borrar una Pagina Wiki"
 
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr ""
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr "Usuario de Wiki"
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr "Página Wiki"
-
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr "Editor de Wiki"
-
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr ""
-
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:47 src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr "Añadir una Pagina Wiki"
-
-#: src/zwiki/configure.zcml:56
-msgid "Edit Wiki Page"
-msgstr "Editar una Pagina Wiki"
-
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr "Borrar una Pagina Wiki"
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr ""
-
 #~ msgid "Bases"
 #~ msgstr "Bases"
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/extract.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/extract.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/extract.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -27,7 +27,7 @@
 
 from interfaces import IPOTEntry, IPOTMaker, ITokenEater
 from zope.interface import implements
-from zope.i18nmessageid import MessageID
+from zope.i18nmessageid import MessageID, Message
 
 DEFAULT_CHARSET = 'UTF-8'
 DEFAULT_ENCODING = '8bit'
@@ -113,7 +113,9 @@
         if self.comments:
             file.write(self.comments)
         if (isinstance(self.msgid, MessageID) and
-               self.msgid != self.msgid.default):
+               self.msgid != self.msgid.default) or (
+           isinstance(self.msgid, Message) and
+               self.msgid.default is not None):
             default = self.msgid.default.strip()
             lines = normalize(default).split("\n")
             lines[0] = "# Default: %s\n" % lines[0]

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/fr/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/fr/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/fr/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Zope X3 Pre-M4\n"
-"POT-Creation-Date: Fri Apr 01 19:40:34 2005\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: 2004-06-25 16:00+0100\n"
 "Last-Translator: Thierry Goyvaerts <Thierry.Goyvaerts at skynet.be>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope3.org>\n"
@@ -120,7 +120,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:211
-msgid "Form Parse"
+msgid "Form Parser"
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:22
@@ -241,33 +241,28 @@
 msgstr "Un Rôle Persistant"
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-#, fuzzy
-msgid "Transaction API"
-msgstr "Elément De Transition"
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 #, fuzzy
 msgid "Connection Management"
 msgstr "Nom De Connexion"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 #, fuzzy
 msgid "Sub-Transactions"
 msgstr "Transitions"
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 #, fuzzy
 msgid "Schema Fields"
 msgstr "Définir le champ"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 #, fuzzy
 msgid "Interfaces and Schemas"
@@ -287,7 +282,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:68
-#: src/zope/app/apidoc/ifacemodule/index.pt:275
+#: src/zope/app/apidoc/ifacemodule/index.pt:280
 msgid "Factories"
 msgstr "Usines"
 
@@ -412,17 +407,6 @@
 msgid "Attributes/Properties"
 msgstr "Attributs/Propriétés"
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr "type:"
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr "Valeur:"
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -455,6 +439,17 @@
 msgid "Documentation String"
 msgstr "Chaîne De Documentation"
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr "type:"
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr "Valeur:"
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 #, fuzzy
 msgid "Directly provided interfaces"
@@ -559,12 +554,12 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 #, fuzzy
 msgid "<subscription>"
 msgstr "Abonnements"
 
-#: src/zope/app/apidoc/component.py:202 src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr ""
 
@@ -598,6 +593,16 @@
 msgid "zope.app.apidoc.UseAPIDoc"
 msgstr ""
 
+#: src/zope/app/apidoc/configure.zcml:68
+msgid "API Doc Tool"
+msgstr ""
+
+#: src/zope/app/apidoc/configure.zcml:68
+msgid ""
+"          These are all the preferences related to viewing the API          "
+"documtation."
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:13
 #, fuzzy
 msgid "(line ${line})"
@@ -608,6 +613,27 @@
 msgid "(name: ${name})"
 msgstr "Nom de la base de données: ${name}"
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+#, fuzzy
+msgid "registered:"
+msgstr "Non validé"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr "requis:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr "Aucune Interface requise."
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr "fournit:"
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 #, fuzzy
 msgid "No interface provided."
@@ -622,7 +648,7 @@
 msgid "Class:"
 msgstr "Classe:"
 
-#: src/zope/app/apidoc/ifacemodule/configure.zcml:70
+#: src/zope/app/apidoc/ifacemodule/configure.zcml:69
 #, fuzzy
 msgid "Interface Details"
 msgstr "Champ de type Interface"
@@ -705,11 +731,11 @@
 msgid "There are no adapters registered for this interface."
 msgstr "Il n'y a pas d'Adapteur enregistré pour cette Interface."
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:270
+#: src/zope/app/apidoc/ifacemodule/index.pt:275
 msgid "Other Information"
 msgstr "Information diverse"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:277
+#: src/zope/app/apidoc/ifacemodule/index.pt:282
 #, fuzzy
 msgid "A list of factories that create objects implementing this interface."
 msgstr ""
@@ -720,16 +746,16 @@
 msgid "Base interfaces"
 msgstr "Interfaces:"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:292
+#: src/zope/app/apidoc/ifacemodule/index.pt:297
 msgid "A list of utilities that are are registered to provide this interface."
 msgstr "Une liste d'Utilitaires enregistrés pour fournir cette Interface."
 
 # Default: "Bases"
-#: src/zope/app/apidoc/ifacemodule/index.pt:305
+#: src/zope/app/apidoc/ifacemodule/index.pt:310
 msgid "Classes"
 msgstr "Classes"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:307
+#: src/zope/app/apidoc/ifacemodule/index.pt:312
 #, fuzzy
 msgid ""
 "A list of classes that implement this interface. This might duplicate the "
@@ -773,31 +799,10 @@
 msgid "Interface Finder:"
 msgstr "Champ de type Interface"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-#, fuzzy
-msgid "registered:"
-msgstr "Non validé"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr "Type De Présentation:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr "requis:"
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr "Aucune Interface requise."
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr "fournit:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 #, fuzzy
 msgid "layer:"
@@ -816,15 +821,6 @@
 msgid "Permission:"
 msgstr "Permissions:"
 
-#: src/zope/app/apidoc/preference/configure.zcml:43
-msgid "User Preferences API"
-msgstr ""
-
-#: src/zope/app/apidoc/preference/menu.pt:5
-#, fuzzy
-msgid "Preferences"
-msgstr "Référence ZCML"
-
 #: src/zope/app/apidoc/typemodule/type.py:100
 #, fuzzy
 msgid "Interface Types"
@@ -843,16 +839,20 @@
 msgstr ""
 
 #: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:58
 msgid "n/a"
 msgstr "non disponible"
 
-#: src/zope/app/apidoc/utilitymodule/index.pt:19
+#: src/zope/app/apidoc/utilitymodule/index.pt:12
+#, fuzzy
+msgid "(Name: \"${name}\")"
+msgstr "Nom de la base de données: ${name}"
+
+#: src/zope/app/apidoc/utilitymodule/index.pt:20
 msgid "Component:"
 msgstr "Composant:"
 
 #: src/zope/app/apidoc/utilitymodule/utilitymodule.py:87
-#: src/zope/app/apidoc/ifacemodule/index.pt:290
+#: src/zope/app/apidoc/ifacemodule/index.pt:295
 msgid "Utilities"
 msgstr "Utilitaire"
 
@@ -939,84 +939,92 @@
 "Les Espaces De Nom qui ne sont pas des URL complètes commencent par \"http://"
 "namespaces.zope.org\"."
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:10
+#: src/zope/app/applicationcontrol/browser/configure.zcml:25
+msgid "Runtime Information"
+msgstr "Information Temps D'Exécution"
+
+#: src/zope/app/applicationcontrol/browser/configure.zcml:29
 msgid "Server Control"
 msgstr "Contrôleur Du Serveur"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:15
-msgid "Runtime Information"
-msgstr "Information Temps D'Exécution"
-
-#: src/zope/app/applicationcontrol/browser/configure.zcml:24
+#: src/zope/app/applicationcontrol/browser/configure.zcml:35
 msgid "ZODB Control"
 msgstr "Contrôle De La ZODB"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:41
+#: src/zope/app/applicationcontrol/browser/configure.zcml:52
 msgid "Manage Process"
 msgstr "Gérer Processus"
 
 #: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:11
+msgid "Uptime"
+msgstr "Temps depuis la mise en route"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:16
+msgid "System platform"
+msgstr "Plate-forme système"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:21
 msgid "Zope version"
 msgstr "Version Zope"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:15
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:26
 msgid "Python version"
 msgstr "Version Python"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:19
-msgid "System platform"
-msgstr "Plate-forme système"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
+msgid "Command line"
+msgstr "Ligne de commande"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:23
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:36
 msgid "Preferred encoding"
 msgstr "Codage préféré"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:27
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
+msgid "Zope Runtime Information"
+msgstr "Information Temps D'Exécution De Zope"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:41
 msgid "FileSytem encoding"
 msgstr "Codage du système de fichier"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
-msgid "Command line"
-msgstr "Ligne de commande"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:35
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:46
 msgid "Process id"
 msgstr "Identification de processus"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:39
-msgid "Uptime"
-msgstr "Temps depuis la mise en route"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
-msgid "Zope Runtime Information"
-msgstr "Information Temps D'Exécution De Zope"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:43
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:51
 msgid "Python path"
 msgstr "PYTHONPATH"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:47
+# Default: "n/a"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:37
+#: src/zope/app/applicationcontrol/runtimeinfo.py:71
+#, fuzzy
+msgid "Unavailable"
+msgstr "non disponible"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:67
 msgid "${days} day(s) ${hours}:${minutes}:${seconds}"
 msgstr "${days} jour(s) ${hours}:${minutes}:${seconds}"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:68
-msgid "Could not retrieve runtime information."
-msgstr "Information temps d'exécution indisponible."
+#: src/zope/app/applicationcontrol/browser/server-control.pt:10
+#, fuzzy
+msgid "Shutdown time"
+msgstr "Arrêter le serveur:"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:11
+#: src/zope/app/applicationcontrol/browser/server-control.pt:14
 msgid "seconds"
 msgstr "secondes"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:13
+#: src/zope/app/applicationcontrol/browser/server-control.pt:15
 msgid ""
 "If you specify a time of 0 seconds, then the server will do a hard shutdown."
 msgstr "Si vous spécifiez 0 seconde alors le serveur effectuera un arrêt dur."
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:18
+#: src/zope/app/applicationcontrol/browser/server-control.pt:24
 msgid "Restart server"
 msgstr "Redémarrer le serveur"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:21
+#: src/zope/app/applicationcontrol/browser/server-control.pt:27
 msgid "Shutdown server"
 msgstr "Arrêter le serveur"
 
@@ -1024,10 +1032,6 @@
 msgid "Zope Stub Server Controller"
 msgstr "Controleur De Serveur Zope Stub"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:9
-msgid "Shutdown time:"
-msgstr "Arrêter le serveur:"
-
 #: src/zope/app/applicationcontrol/browser/servercontrol.py:34
 msgid "You restarted the server."
 msgstr "Vous avez redémarré le serveur."
@@ -1040,40 +1044,46 @@
 msgid "Domain"
 msgstr "Domaine"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr "Langage"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr "Fichiers"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 msgid "reload-button"
 msgstr "Charger"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+#, fuzzy
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
 msgstr "Le Catalogue De Message a été rechargé."
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
-msgid "Name of database: ${name}"
+#, fuzzy
+msgid "Name of database"
 msgstr "Nom de la base de données: ${name}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:15
-msgid "Size of database: ${size}"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:16
+#, fuzzy
+msgid "Size of database"
 msgstr "Taille de la base de données: ${size}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:25
-msgid "Keep up to:"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:28
+#, fuzzy
+msgid "Keep up to"
 msgstr "Garder jusqu'à:"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:29
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:32
 msgid "days"
 msgstr "jour(s)"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:34
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:37
 msgid "pack-button"
 msgstr "Nettoyer"
 
@@ -1408,8 +1418,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
+#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 #: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
-#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 msgid "save-changes-button"
 msgstr "Enregistrer les modifications"
 
@@ -1418,22 +1428,21 @@
 msgstr "Invalider Cache"
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
+#: src/zope/app/cache/browser/ramstats.pt:38
 #: src/zope/app/cache/browser/ramedit.pt:56
-#: src/zope/app/cache/browser/ramstats.pt:38
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:52
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1490,7 +1499,7 @@
 msgstr "Vous pouvez configurer le cache de RAM ici."
 
 #: src/zope/app/cache/browser/ramstats.pt:21
-#: src/zope/app/recorder/sessions.pt:23
+#: src/zope/app/recorder/sessions.pt:17
 msgid "Path"
 msgstr "Chemin"
 
@@ -1864,18 +1873,23 @@
 msgid "The interface provided by the utility"
 msgstr "L'Interface délivrée avec l'Utilitaire"
 
-#: src/zope/app/component/interfaces/registration.py:104
+#: src/zope/app/component/interfaces/registration.py:100
+#, fuzzy
+msgid "The interface the component provides through this registration."
+msgstr "L'Interface fournie"
+
+#: src/zope/app/component/interfaces/registration.py:106
 msgid "The permission needed to use the component"
 msgstr "La permission nécessaire à l'utilisation du composant"
 
-#: src/zope/app/component/interfaces/registration.py:212
+#: src/zope/app/component/interfaces/registration.py:214
 #: src/zope/app/component/configure.zcml:9
 #: src/zope/app/component/browser/editregistration.pt:4
 #: src/zope/app/component/browser/editregistration.pt:11
 msgid "Registration Manager"
 msgstr "Gestionnaire D'Enregistrement"
 
-#: src/zope/app/component/interfaces/registration.py:213
+#: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
 msgstr ""
 
@@ -1892,26 +1906,21 @@
 msgid "Registration status"
 msgstr "Statut d'enregistrement"
 
-#: src/zope/app/component/interfaces/registration.py:92
+#: src/zope/app/component/interfaces/registration.py:94
 #, fuzzy
 msgid "Registration Component"
 msgstr "Gestionnaire D'Enregistrement"
 
-#: src/zope/app/component/interfaces/registration.py:93
+#: src/zope/app/component/interfaces/registration.py:95
 #, fuzzy
 msgid "The component the registration is for."
 msgstr "Enregistrement Définition Composant De Contenu"
 
-#: src/zope/app/component/interfaces/registration.py:97
+#: src/zope/app/component/interfaces/registration.py:99
 #, fuzzy
 msgid "Component Interface"
 msgstr "Interfaces implémentées"
 
-#: src/zope/app/component/interfaces/registration.py:98
-#, fuzzy
-msgid "The interface the component provides through this registration."
-msgstr "L'Interface fournie"
-
 #: src/zope/app/component/metadirectives.py:112
 msgid "View attributes that are also allowed if the user has permission."
 msgstr ""
@@ -2571,6 +2580,21 @@
 msgid "File name of the data file."
 msgstr "Nom de fichier du fichier de données."
 
+#: src/zope/app/demo/skinpref/configure.zcml:15
+#, fuzzy
+msgid "ZMI Settings"
+msgstr "Paramétrage"
+
+#: src/zope/app/demo/skinpref/configure.zcml:15
+msgid ""
+"         In this category you will find all preferences related to the "
+"Zope         Management Interface (ZMI).         "
+msgstr ""
+
+#: src/zope/app/demo/skinpref/configure.zcml:25
+msgid "Skin Selection"
+msgstr ""
+
 #: src/zope/app/demo/widget/browser/boolwidget.zcml:21
 #, fuzzy
 msgid "BoolWidget Index"
@@ -2580,7 +2604,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101 src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr "Vue"
 
@@ -2626,27 +2649,24 @@
 
 #: src/zope/app/demo/widget/browser/popup.pt:36
 #: src/zope/app/schema/browser/schema_edit.pt:21
-#: src/zope/app/apidoc/preference/edit.pt:78
 #: src/zope/app/form/browser/add.pt:23 src/zope/app/form/browser/edit.pt:24
 msgid "There are ${num_errors} input errors."
 msgstr "Il y a ${num_errors} erreurs d'encodage."
 
 #: src/zope/app/demo/widget/browser/popup.pt:65
+#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/file/browser/file_add.pt:45
-#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
-#: src/zope/app/apidoc/preference/edit.pt:113
 #: src/zope/app/component/browser/editregistration.pt:48
 #: src/zope/app/form/browser/add.pt:51 src/zope/app/form/browser/edit.pt:51
 msgid "refresh-button"
 msgstr "Rafraîchir"
 
 #: src/zope/app/demo/widget/browser/popup.pt:67
-#: src/zope/app/apidoc/preference/edit.pt:115
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr "Soumettre"
 
@@ -2949,8 +2969,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
+#: src/zope/app/cache/browser/ramstats.pt:11
 #: src/zope/app/cache/browser/ramedit.pt:10
-#: src/zope/app/cache/browser/ramstats.pt:11
 msgid "Errors"
 msgstr "Erreurs"
 
@@ -2988,6 +3008,12 @@
 msgid "No exceptions logged."
 msgstr "Pas d'exceptions enregistrées."
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr "Temps"
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -3122,7 +3148,7 @@
 msgid "Change a file"
 msgstr "Modifier un fichier"
 
-#: src/zope/app/file/browser/file.py:167
+#: src/zope/app/file/browser/file.py:179
 #: src/zope/app/form/browser/editview.py:114
 msgid "Updated on ${date_time}"
 msgstr "Mis à jour le ${date_time}"
@@ -3130,8 +3156,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
+#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/container/browser/add.pt:39
-#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr "Ajouter"
@@ -3196,23 +3222,26 @@
 msgstr " ${width}x${height}"
 
 #: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
+#: src/zope/app/file/browser/file_upload.pt:15
 #: src/zope/app/file/browser/file_add.pt:15
-#: src/zope/app/file/browser/file_upload.pt:15
 msgid "Content Type"
 msgstr "Type De Contenu"
 
-#: src/zope/app/file/interfaces.py:28 src/zope/app/file/browser/file_add.pt:15
+#: src/zope/app/file/interfaces.py:28
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr "Le type de contenu identifie le type de données."
 
-#: src/zope/app/file/interfaces.py:35 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:35
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr "Données"
 
-#: src/zope/app/file/interfaces.py:36 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:36
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr "Le contenu de l'objet."
 
@@ -3244,16 +3273,6 @@
 msgid "An error occured."
 msgstr "Une erreur s'est produite."
 
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr "Précédent"
-
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr "Suivant"
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr ""
@@ -3298,6 +3317,16 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr "Précédent"
+
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr "Suivant"
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr "Pas de changement à sauvegarder"
@@ -3333,26 +3362,26 @@
 msgstr "Ajouter %s"
 
 # Default: "Selected"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr ""
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr ""
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
 msgstr ""
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr ""
 
@@ -3504,14 +3533,26 @@
 msgstr "Page de Dossier"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
+msgid ""
+"Whether home folders should be created upon adding a assignment, if missing."
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:52
+#, fuzzy
+msgid "Auto create assignment"
+msgstr "Arguments"
+
+#: src/zope/app/homefolder/interfaces.py:53
+msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:59
 msgid "Local Home Folder Role"
 msgstr ""
 
-#: src/zope/app/homefolder/interfaces.py:53
+#: src/zope/app/homefolder/interfaces.py:60
 msgid ""
 "The local role that the user will have in its home folder. This role is only "
 "set on folders that are created by the manager."
@@ -3539,7 +3580,7 @@
 "en        fournissant les traductions de message."
 
 #: src/zope/app/i18n/browser/configure.zcml:5
-#: src/zope/app/applicationcontrol/browser/configure.zcml:32
+#: src/zope/app/applicationcontrol/browser/configure.zcml:43
 #: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:4
 msgid "Translation Domains"
 msgstr "Domaines De Traduction"
@@ -3562,22 +3603,10 @@
 "Ici vous pouvez exporter et importer des messages de votre Domaine De "
 "Traduction."
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr "Sélectionner Des Langages:"
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr "Nom du Fichier D'Importation:"
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr "Traduire - Domaine De Traduction"
-
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
 msgstr "Exporter"
@@ -3604,11 +3633,10 @@
 msgid "synchronize-button"
 msgstr "Synchroniser"
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
-msgstr "Identificateur De Message"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
+msgstr "Statut"
 
 #: src/zope/app/i18n/browser/synchronize.py:34
 msgid "Up to Date"
@@ -3642,10 +3670,22 @@
 msgid "Delete Messages"
 msgstr "Effacer Des Messages"
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr "Sélectionner Des Langages:"
+
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr "Editer"
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr "Traduire - Domaine De Traduction"
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr "Nouveau Langage:"
@@ -3658,6 +3698,12 @@
 msgid "filter-button"
 msgstr "Filtrer"
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr "Identificateur De Message"
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr "Editer Message"
@@ -4090,7 +4136,6 @@
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
 #: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76 src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Editer"
@@ -4103,6 +4148,36 @@
 msgid "The password for the user."
 msgstr "Le mot de passe de l'utilisateur."
 
+#: src/zope/app/preference/configure.zcml:116
+msgid "User Preferences API"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:30
+#, fuzzy
+msgid "User Preferences"
+msgstr "Référence ZCML"
+
+#: src/zope/app/preference/configure.zcml:70
+msgid "A Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:70
+#: src/zope/app/preference/configure.zcml:77
+msgid "Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:77
+msgid ""
+"           This component lets you define the local default user           "
+"preferences. The values of this provider are used, if the           user has "
+"not made a selection yet."
+msgstr ""
+
+#: src/zope/app/preference/menu.pt:5
+#, fuzzy
+msgid "Preferences"
+msgstr "Référence ZCML"
+
 #: src/zope/app/presentation/browser.zcml:15
 msgid "Change page"
 msgstr "Modifier la page"
@@ -4500,44 +4575,29 @@
 msgid "Recorded Sessions"
 msgstr "Permissions refusées"
 
-#: src/zope/app/recorder/sessions.pt:12
-msgid "There are no recorded requests that pass your filter."
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:21 src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr "Temps"
-
 # Default: "Methods"
-#: src/zope/app/recorder/sessions.pt:22
+#: src/zope/app/recorder/sessions.pt:16
 #, fuzzy
 msgid "Method"
 msgstr "Méthodes"
 
-#: src/zope/app/recorder/sessions.pt:24
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr "Statut"
-
-#: src/zope/app/recorder/sessions.pt:4
-#, fuzzy
-msgid "Recorded HTTP Sessions"
-msgstr "Permissions refusées"
-
-#: src/zope/app/recorder/sessions.pt:42
+#: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:44
+#: src/zope/app/recorder/sessions.pt:38
 msgid "Clear All"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:64
+#: src/zope/app/recorder/sessions.pt:57
 #, fuzzy
 msgid "Filter"
 msgstr "Fichier"
 
+#: src/zope/app/recorder/sessions.pt:6
+msgid "There are no recorded requests that pass your filter."
+msgstr ""
+
 #: src/zope/app/renderer/configure.zcml:14
 msgid "Plain Text Source"
 msgstr "Source Text Pur"
@@ -4958,11 +5018,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr "Vous êtes connecté comme ${UserTitle}."
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr "Retourner à la page principale."
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr "Connexion réussie !"
@@ -4982,6 +5037,11 @@
 "Vous avez annulé la procédure de connexion. <a href=\"\"> Cliquez-ici pour "
 "retourner. </a>"
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr "Retourner à la page principale."
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr "Déconnexion réussie !"
@@ -6284,136 +6344,113 @@
 msgid "Id as which this permission will be known and used."
 msgstr "Identificateur de la permission."
 
-#: src/zwiki/browser/configure.zcml:109 src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr "Parents"
+#, fuzzy
+#~ msgid "Transaction API"
+#~ msgstr "Elément De Transition"
 
-#: src/zwiki/browser/configure.zcml:134 src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
-msgid "Comment"
-msgstr "Commentaire"
+#~ msgid "Could not retrieve runtime information."
+#~ msgstr "Information temps d'exécution indisponible."
 
-#: src/zwiki/browser/configure.zcml:143
-msgid "A Comment"
-msgstr "Un commentaire"
+#, fuzzy
+#~ msgid "Recorded HTTP Sessions"
+#~ msgstr "Permissions refusées"
 
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr "Menu d'actions liées à une Page Wiki"
+#~ msgid "Parents"
+#~ msgstr "Parents"
 
-#: src/zwiki/browser/configure.zcml:168
-msgid "Table of Contents"
-msgstr "Table des matières"
+#~ msgid "Comment"
+#~ msgstr "Commentaire"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr "Wiki"
+#~ msgid "A Comment"
+#~ msgstr "Un commentaire"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr "Un Wiki"
+#~ msgid "Menu for Wiki Page related actions."
+#~ msgstr "Menu d'actions liées à une Page Wiki"
 
-#: src/zwiki/browser/configure.zcml:24 src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr "Table des matières"
+#~ msgid "Table of Contents"
+#~ msgstr "Table des matières"
 
-#: src/zwiki/browser/configure.zcml:32 src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr "Chercher"
+#~ msgid "Wiki"
+#~ msgstr "Wiki"
 
-#: src/zwiki/browser/configure.zcml:44 src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163 src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr "Abonnements"
+#~ msgid "A Wiki"
+#~ msgstr "Un Wiki"
 
-#: src/zwiki/browser/configure.zcml:76
-msgid "Change Wiki Page"
-msgstr "Modifier une Page Wiki"
+#~ msgid "TOC"
+#~ msgstr "Table des matières"
 
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr "Ajouter un Wiki"
+#~ msgid "Search"
+#~ msgstr "Chercher"
 
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr "Utilisateur Wiki"
+#~ msgid "Subscriptions"
+#~ msgstr "Abonnements"
 
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr "Visiteurs Wiki, qui ne peuvent que visualiser et commenter Wikis."
+#~ msgid "Change Wiki Page"
+#~ msgstr "Modifier une Page Wiki"
 
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr "Une Page Wiki"
+#~ msgid "Add Wiki"
+#~ msgstr "Ajouter un Wiki"
 
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr "Page Wiki"
+#~ msgid "Wiki User"
+#~ msgstr "Utilisateur Wiki"
 
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr "Un Commentaire de Page Wiki"
+#~ msgid "Wiki visitors, which can only view and comment on wikis."
+#~ msgstr "Visiteurs Wiki, qui ne peuvent que visualiser et commenter Wikis."
 
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr "Commentaire de Page Wiki"
+#~ msgid "A Wiki Page"
+#~ msgstr "Une Page Wiki"
 
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr "L'Editeur Wiki permet de créer et éditer Wikis."
+#~ msgid "Wiki Page"
+#~ msgstr "Page Wiki"
 
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr "Editeur Wiki"
+#~ msgid "A Wiki Page Comment"
+#~ msgstr "Un Commentaire de Page Wiki"
 
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr "Administrateur Wiki"
+#~ msgid "Wiki Page Comment"
+#~ msgstr "Commentaire de Page Wiki"
 
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr "L'Administrateur Wiki peut totalement gérer les pages Wikis."
+#~ msgid "The Wiki Editor can create and edit wikis."
+#~ msgstr "L'Editeur Wiki permet de créer et éditer Wikis."
 
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr "Visualiser Page Wiki"
+#~ msgid "Wiki Editor"
+#~ msgstr "Editeur Wiki"
 
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr "Visualiser une Page Wiki"
+#~ msgid "Wiki Administrator"
+#~ msgstr "Administrateur Wiki"
 
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr "Commentaire sur une Page Wiki"
+#~ msgid "The Wiki Admin can fully manage wiki pages."
+#~ msgstr "L'Administrateur Wiki peut totalement gérer les pages Wikis."
 
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr "Commenter une Page Wiki"
+#~ msgid "View Wiki Page"
+#~ msgstr "Visualiser Page Wiki"
 
-#: src/zwiki/configure.zcml:47 src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr "Ajouter une Page Wiki"
+#~ msgid "View a Wiki Page"
+#~ msgstr "Visualiser une Page Wiki"
 
-#: src/zwiki/configure.zcml:56
-msgid "Edit Wiki Page"
-msgstr "Editer une Page Wiki"
+#~ msgid "Comment on Wiki Page"
+#~ msgstr "Commentaire sur une Page Wiki"
 
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr "Effacer une Page Wiki"
+#~ msgid "Make a comment on Wiki Page"
+#~ msgstr "Commenter une Page Wiki"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr "Associer un parent à la Page Wiki"
+#~ msgid "Add Wiki Page"
+#~ msgstr "Ajouter une Page Wiki"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr "Associer un parent à une Page Wiki"
+#~ msgid "Edit Wiki Page"
+#~ msgstr "Editer une Page Wiki"
 
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr "Implémentation minimum de Conteneur De Page Wiki"
+#~ msgid "Delete Wiki Page"
+#~ msgstr "Effacer une Page Wiki"
 
+#~ msgid "Reparent Wiki Page"
+#~ msgstr "Associer un parent à la Page Wiki"
+
+#~ msgid "Reparent a Wiki Page"
+#~ msgstr "Associer un parent à une Page Wiki"
+
+#~ msgid "Minimal Wiki Page Container implementation "
+#~ msgstr "Implémentation minimum de Conteneur De Page Wiki"
+
 #~ msgid "Bases"
 #~ msgstr "Bases"
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/it/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/it/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/it/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -3,7 +3,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: zope\n"
-"POT-Creation-Date: Fri Apr 01 19:40:34 2005\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: 2004-07-02 11:20+0200\n"
 "Last-Translator: Fabrizio Reale\n"
 "Language-Team:  <fabrizio.reale at redomino.com>\n"
@@ -120,7 +120,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:211
-msgid "Form Parse"
+msgid "Form Parser"
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:22
@@ -241,33 +241,28 @@
 msgstr "Menu persistente del browser"
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-#, fuzzy
-msgid "Transaction API"
-msgstr "Elementi delle transizioni"
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 #, fuzzy
 msgid "Connection Management"
 msgstr "Nome della Connessione"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 #, fuzzy
 msgid "Sub-Transactions"
 msgstr "Transizioni"
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 #, fuzzy
 msgid "Schema Fields"
 msgstr "Imposta Campo"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 #, fuzzy
 msgid "Interfaces and Schemas"
@@ -287,7 +282,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:68
-#: src/zope/app/apidoc/ifacemodule/index.pt:275
+#: src/zope/app/apidoc/ifacemodule/index.pt:280
 msgid "Factories"
 msgstr "Fabbricatori"
 
@@ -410,17 +405,6 @@
 msgid "Attributes/Properties"
 msgstr "Attributi/Proprietà"
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr "tipo:"
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr "Valore:"
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -454,6 +438,17 @@
 msgid "Documentation String"
 msgstr "Stringa di documentazione"
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr "tipo:"
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr "Valore:"
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 #, fuzzy
 msgid "Directly provided interfaces"
@@ -559,12 +554,12 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 #, fuzzy
 msgid "<subscription>"
 msgstr "Descrizione"
 
-#: src/zope/app/apidoc/component.py:202 src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr ""
 
@@ -598,6 +593,16 @@
 msgid "zope.app.apidoc.UseAPIDoc"
 msgstr ""
 
+#: src/zope/app/apidoc/configure.zcml:68
+msgid "API Doc Tool"
+msgstr ""
+
+#: src/zope/app/apidoc/configure.zcml:68
+msgid ""
+"          These are all the preferences related to viewing the API          "
+"documtation."
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:13
 #, fuzzy
 msgid "(line ${line})"
@@ -608,6 +613,27 @@
 msgid "(name: ${name})"
 msgstr "Nome del database: ${name}"
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+#, fuzzy
+msgid "registered:"
+msgstr "Non registrato"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr "richiesti:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr "Nessuna interfaccia richiesta."
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr "fornisce:"
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 #, fuzzy
 msgid "No interface provided."
@@ -622,7 +648,7 @@
 msgid "Class:"
 msgstr "Classi:"
 
-#: src/zope/app/apidoc/ifacemodule/configure.zcml:70
+#: src/zope/app/apidoc/ifacemodule/configure.zcml:69
 #, fuzzy
 msgid "Interface Details"
 msgstr "Campo Interfaccia"
@@ -706,11 +732,11 @@
 msgid "There are no adapters registered for this interface."
 msgstr "Nessun adattatore registrato per questa interfaccia."
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:270
+#: src/zope/app/apidoc/ifacemodule/index.pt:275
 msgid "Other Information"
 msgstr "Altre informazioni"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:277
+#: src/zope/app/apidoc/ifacemodule/index.pt:282
 #, fuzzy
 msgid "A list of factories that create objects implementing this interface."
 msgstr ""
@@ -722,17 +748,17 @@
 msgid "Base interfaces"
 msgstr "Interfacce:"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:292
+#: src/zope/app/apidoc/ifacemodule/index.pt:297
 msgid "A list of utilities that are are registered to provide this interface."
 msgstr ""
 "Lista delle utilità che sono registrate come fornitori di questa interfaccia."
 
 # Default: "Basi"
-#: src/zope/app/apidoc/ifacemodule/index.pt:305
+#: src/zope/app/apidoc/ifacemodule/index.pt:310
 msgid "Classes"
 msgstr "Classi"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:307
+#: src/zope/app/apidoc/ifacemodule/index.pt:312
 #, fuzzy
 msgid ""
 "A list of classes that implement this interface. This might duplicate the "
@@ -777,31 +803,10 @@
 msgid "Interface Finder:"
 msgstr "Campo Interfaccia"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-#, fuzzy
-msgid "registered:"
-msgstr "Non registrato"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr "tipo di presentazione:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr "richiesti:"
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr "Nessuna interfaccia richiesta."
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr "fornisce:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 #, fuzzy
 msgid "layer:"
@@ -820,15 +825,6 @@
 msgid "Permission:"
 msgstr "Permessi:"
 
-#: src/zope/app/apidoc/preference/configure.zcml:43
-msgid "User Preferences API"
-msgstr ""
-
-#: src/zope/app/apidoc/preference/menu.pt:5
-#, fuzzy
-msgid "Preferences"
-msgstr "Riferimento ZCML"
-
 #: src/zope/app/apidoc/typemodule/type.py:100
 #, fuzzy
 msgid "Interface Types"
@@ -847,16 +843,20 @@
 msgstr ""
 
 #: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:58
 msgid "n/a"
 msgstr "n/d"
 
-#: src/zope/app/apidoc/utilitymodule/index.pt:19
+#: src/zope/app/apidoc/utilitymodule/index.pt:12
+#, fuzzy
+msgid "(Name: \"${name}\")"
+msgstr "Nome del database: ${name}"
+
+#: src/zope/app/apidoc/utilitymodule/index.pt:20
 msgid "Component:"
 msgstr "Componente:"
 
 #: src/zope/app/apidoc/utilitymodule/utilitymodule.py:87
-#: src/zope/app/apidoc/ifacemodule/index.pt:290
+#: src/zope/app/apidoc/ifacemodule/index.pt:295
 msgid "Utilities"
 msgstr "Utilità"
 
@@ -943,85 +943,93 @@
 "Gli spazi dei nomi che non sono URL completi cominciano con \"http://"
 "namespaces.zope.org\"."
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:10
+#: src/zope/app/applicationcontrol/browser/configure.zcml:25
+msgid "Runtime Information"
+msgstr "Informazioni di Runtime"
+
+#: src/zope/app/applicationcontrol/browser/configure.zcml:29
 msgid "Server Control"
 msgstr "Controlli del Server"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:15
-msgid "Runtime Information"
-msgstr "Informazioni di Runtime"
-
-#: src/zope/app/applicationcontrol/browser/configure.zcml:24
+#: src/zope/app/applicationcontrol/browser/configure.zcml:35
 msgid "ZODB Control"
 msgstr "Gestione ZODB"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:41
+#: src/zope/app/applicationcontrol/browser/configure.zcml:52
 msgid "Manage Process"
 msgstr "Gestione server"
 
 #: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:11
+msgid "Uptime"
+msgstr "Tempo di funzionamento"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:16
+msgid "System platform"
+msgstr "Sistema"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:21
 msgid "Zope version"
 msgstr "Versione di Zope"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:15
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:26
 msgid "Python version"
 msgstr "Versione di Python"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:19
-msgid "System platform"
-msgstr "Sistema"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
+msgid "Command line"
+msgstr "Linea di comando"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:23
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:36
 msgid "Preferred encoding"
 msgstr "Codifica preferita"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:27
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
+msgid "Zope Runtime Information"
+msgstr "Informazioni Runtime di Zope"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:41
 msgid "FileSytem encoding"
 msgstr "Codifica del File System"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
-msgid "Command line"
-msgstr "Linea di comando"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:35
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:46
 msgid "Process id"
 msgstr "Id del processo"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:39
-msgid "Uptime"
-msgstr "Tempo di funzionamento"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
-msgid "Zope Runtime Information"
-msgstr "Informazioni Runtime di Zope"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:43
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:51
 msgid "Python path"
 msgstr "Percorso del Python"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:47
+# Default: "n/a"
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:37
+#: src/zope/app/applicationcontrol/runtimeinfo.py:71
+#, fuzzy
+msgid "Unavailable"
+msgstr "n/d"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:67
 msgid "${days} day(s) ${hours}:${minutes}:${seconds}"
 msgstr "${days} giorni ${hours}:${minutes}:${seconds}"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:68
-msgid "Could not retrieve runtime information."
-msgstr "Non riesco a recuperare informazioni di runtime."
+#: src/zope/app/applicationcontrol/browser/server-control.pt:10
+#, fuzzy
+msgid "Shutdown time"
+msgstr "Tempo di spegnimento:"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:11
+#: src/zope/app/applicationcontrol/browser/server-control.pt:14
 msgid "seconds"
 msgstr "secondi"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:13
+#: src/zope/app/applicationcontrol/browser/server-control.pt:15
 msgid ""
 "If you specify a time of 0 seconds, then the server will do a hard shutdown."
 msgstr ""
 "Se specifichi un tempo di 0 secondi il server farà uno spegnimento forzato."
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:18
+#: src/zope/app/applicationcontrol/browser/server-control.pt:24
 msgid "Restart server"
 msgstr "Riavvia il server"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:21
+#: src/zope/app/applicationcontrol/browser/server-control.pt:27
 msgid "Shutdown server"
 msgstr "Spegni il server"
 
@@ -1029,10 +1037,6 @@
 msgid "Zope Stub Server Controller"
 msgstr "Gestione dello Zope Stub Server"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:9
-msgid "Shutdown time:"
-msgstr "Tempo di spegnimento:"
-
 #: src/zope/app/applicationcontrol/browser/servercontrol.py:34
 msgid "You restarted the server."
 msgstr "Hai riavviato il server."
@@ -1045,42 +1049,48 @@
 msgid "Domain"
 msgstr "Dominio"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr "Linguaggio"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr "Files"
 
 # Default: "Ricarica"
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 msgid "reload-button"
 msgstr "Ricarica"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+#, fuzzy
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
 msgstr "Catalogo dei Messaggi ricaricato correttamente."
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
-msgid "Name of database: ${name}"
+#, fuzzy
+msgid "Name of database"
 msgstr "Nome del database: ${name}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:15
-msgid "Size of database: ${size}"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:16
+#, fuzzy
+msgid "Size of database"
 msgstr "Dimensione del database: ${size}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:25
-msgid "Keep up to:"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:28
+#, fuzzy
+msgid "Keep up to"
 msgstr "Mantieni fino a:"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:29
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:32
 msgid "days"
 msgstr "giorni"
 
 # Default: "Compatta"
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:34
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:37
 msgid "pack-button"
 msgstr "Compatta"
 
@@ -1421,8 +1431,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
+#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 #: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
-#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 msgid "save-changes-button"
 msgstr "Salva modifiche"
 
@@ -1432,22 +1442,21 @@
 msgstr "Disabilita il valore della cache"
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
+#: src/zope/app/cache/browser/ramstats.pt:38
 #: src/zope/app/cache/browser/ramedit.pt:56
-#: src/zope/app/cache/browser/ramstats.pt:38
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:52
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1505,7 +1514,7 @@
 msgstr "Qui puoi configurare la Cache RAM."
 
 #: src/zope/app/cache/browser/ramstats.pt:21
-#: src/zope/app/recorder/sessions.pt:23
+#: src/zope/app/recorder/sessions.pt:17
 msgid "Path"
 msgstr "Percorso"
 
@@ -1884,18 +1893,23 @@
 msgid "The interface provided by the utility"
 msgstr "L'interfaccia fornita dall'adattatore"
 
-#: src/zope/app/component/interfaces/registration.py:104
+#: src/zope/app/component/interfaces/registration.py:100
+#, fuzzy
+msgid "The interface the component provides through this registration."
+msgstr "L'interfaccia fornita"
+
+#: src/zope/app/component/interfaces/registration.py:106
 msgid "The permission needed to use the component"
 msgstr "Il permesso necessario per usare il componente"
 
-#: src/zope/app/component/interfaces/registration.py:212
+#: src/zope/app/component/interfaces/registration.py:214
 #: src/zope/app/component/configure.zcml:9
 #: src/zope/app/component/browser/editregistration.pt:4
 #: src/zope/app/component/browser/editregistration.pt:11
 msgid "Registration Manager"
 msgstr "Gestore di Registrazioni"
 
-#: src/zope/app/component/interfaces/registration.py:213
+#: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
 msgstr ""
 
@@ -1912,26 +1926,21 @@
 msgid "Registration status"
 msgstr "Stato della registrazione"
 
-#: src/zope/app/component/interfaces/registration.py:92
+#: src/zope/app/component/interfaces/registration.py:94
 #, fuzzy
 msgid "Registration Component"
 msgstr "Registrazione effettuata."
 
-#: src/zope/app/component/interfaces/registration.py:93
+#: src/zope/app/component/interfaces/registration.py:95
 #, fuzzy
 msgid "The component the registration is for."
 msgstr "Registrazione della definizione dei componenti Contenuto"
 
-#: src/zope/app/component/interfaces/registration.py:97
+#: src/zope/app/component/interfaces/registration.py:99
 #, fuzzy
 msgid "Component Interface"
 msgstr "Interfacce implementate"
 
-#: src/zope/app/component/interfaces/registration.py:98
-#, fuzzy
-msgid "The interface the component provides through this registration."
-msgstr "L'interfaccia fornita"
-
 #: src/zope/app/component/metadirectives.py:112
 msgid "View attributes that are also allowed if the user has permission."
 msgstr ""
@@ -2599,6 +2608,21 @@
 msgid "File name of the data file."
 msgstr "Nome del file data."
 
+#: src/zope/app/demo/skinpref/configure.zcml:15
+#, fuzzy
+msgid "ZMI Settings"
+msgstr "Impostazioni"
+
+#: src/zope/app/demo/skinpref/configure.zcml:15
+msgid ""
+"         In this category you will find all preferences related to the "
+"Zope         Management Interface (ZMI).         "
+msgstr ""
+
+#: src/zope/app/demo/skinpref/configure.zcml:25
+msgid "Skin Selection"
+msgstr ""
+
 #: src/zope/app/demo/widget/browser/boolwidget.zcml:21
 #, fuzzy
 msgid "BoolWidget Index"
@@ -2608,7 +2632,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101 src/zwiki/browser/configure.zcml:158
 #, fuzzy
 msgid "View"
 msgstr "Viste"
@@ -2655,18 +2678,16 @@
 
 #: src/zope/app/demo/widget/browser/popup.pt:36
 #: src/zope/app/schema/browser/schema_edit.pt:21
-#: src/zope/app/apidoc/preference/edit.pt:78
 #: src/zope/app/form/browser/add.pt:23 src/zope/app/form/browser/edit.pt:24
 msgid "There are ${num_errors} input errors."
 msgstr "Ci sono ${num_errors} errori di inserimento."
 
 # Default: "Rigenera"
 #: src/zope/app/demo/widget/browser/popup.pt:65
+#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/file/browser/file_add.pt:45
-#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
-#: src/zope/app/apidoc/preference/edit.pt:113
 #: src/zope/app/component/browser/editregistration.pt:48
 #: src/zope/app/form/browser/add.pt:51 src/zope/app/form/browser/edit.pt:51
 msgid "refresh-button"
@@ -2674,10 +2695,9 @@
 
 # Default: "Invia"
 #: src/zope/app/demo/widget/browser/popup.pt:67
-#: src/zope/app/apidoc/preference/edit.pt:115
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr "Invia"
 
@@ -2980,8 +3000,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
+#: src/zope/app/cache/browser/ramstats.pt:11
 #: src/zope/app/cache/browser/ramedit.pt:10
-#: src/zope/app/cache/browser/ramstats.pt:11
 msgid "Errors"
 msgstr "Errori"
 
@@ -3019,6 +3039,12 @@
 msgid "No exceptions logged."
 msgstr "Nessuna eccezione registrata."
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr "Tempo"
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -3153,7 +3179,7 @@
 msgid "Change a file"
 msgstr "Cambia un file"
 
-#: src/zope/app/file/browser/file.py:167
+#: src/zope/app/file/browser/file.py:179
 #: src/zope/app/form/browser/editview.py:114
 msgid "Updated on ${date_time}"
 msgstr "Aggiornato il ${date_time}"
@@ -3162,8 +3188,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
+#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/container/browser/add.pt:39
-#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr "Aggiungi"
@@ -3229,23 +3255,26 @@
 msgstr "${width}x${height}"
 
 #: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
+#: src/zope/app/file/browser/file_upload.pt:15
 #: src/zope/app/file/browser/file_add.pt:15
-#: src/zope/app/file/browser/file_upload.pt:15
 msgid "Content Type"
 msgstr "Tipo di contenuto"
 
-#: src/zope/app/file/interfaces.py:28 src/zope/app/file/browser/file_add.pt:15
+#: src/zope/app/file/interfaces.py:28
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr "Il tipo di contenuto identifica il tipo di dati"
 
-#: src/zope/app/file/interfaces.py:35 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:35
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr "Dati"
 
-#: src/zope/app/file/interfaces.py:36 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:36
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr "Contenuto attuale dell'oggetto"
 
@@ -3277,18 +3306,6 @@
 msgid "An error occured."
 msgstr "Si è verificato un errore."
 
-# Default: "Precedente"
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr "Precedente"
-
-# Default: "Successivo"
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr "Successivo"
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr ""
@@ -3333,6 +3350,18 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+# Default: "Precedente"
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr "Precedente"
+
+# Default: "Successivo"
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr "Successivo"
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr "Nessuna modifica da salvare"
@@ -3368,26 +3397,26 @@
 msgstr "Aggiungi %s"
 
 # Default: "Selected"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr ""
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr ""
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
 msgstr ""
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr ""
 
@@ -3539,14 +3568,26 @@
 msgstr "Cartella della Pagina"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
+msgid ""
+"Whether home folders should be created upon adding a assignment, if missing."
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:52
+#, fuzzy
+msgid "Auto create assignment"
+msgstr "Parametri"
+
+#: src/zope/app/homefolder/interfaces.py:53
+msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:59
 msgid "Local Home Folder Role"
 msgstr ""
 
-#: src/zope/app/homefolder/interfaces.py:53
+#: src/zope/app/homefolder/interfaces.py:60
 msgid ""
 "The local role that the user will have in its home folder. This role is only "
 "set on folders that are created by the manager."
@@ -3574,7 +3615,7 @@
 "traduzioni dei messaggi."
 
 #: src/zope/app/i18n/browser/configure.zcml:5
-#: src/zope/app/applicationcontrol/browser/configure.zcml:32
+#: src/zope/app/applicationcontrol/browser/configure.zcml:43
 #: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:4
 msgid "Translation Domains"
 msgstr "Domini delle traduzioni"
@@ -3596,22 +3637,10 @@
 msgstr ""
 "Qui puoi esportare ed importare messaggi dal tuo Dominio di Traduzione."
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr "Seleziona le lingue:"
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr "Nome del file da importare:"
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr "Dominio di Traduzione - Traduci"
-
 # Default: "Export"
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
@@ -3640,11 +3669,10 @@
 msgid "synchronize-button"
 msgstr "Sincronizza"
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
-msgstr "Id del messaggio"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
+msgstr "Stato"
 
 #: src/zope/app/i18n/browser/synchronize.py:34
 msgid "Up to Date"
@@ -3678,11 +3706,23 @@
 msgid "Delete Messages"
 msgstr "Cancella i messaggi"
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr "Seleziona le lingue:"
+
 # Default: "Modifica"
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr "Modifica"
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr "Dominio di Traduzione - Traduci"
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr "Nuova lingua:"
@@ -3696,6 +3736,12 @@
 msgid "filter-button"
 msgstr "Filtro"
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr "Id del messaggio"
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr "Modifica il messaggio"
@@ -4127,7 +4173,6 @@
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
 #: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76 src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Modifica"
@@ -4140,6 +4185,36 @@
 msgid "The password for the user."
 msgstr "La password dell'utente."
 
+#: src/zope/app/preference/configure.zcml:116
+msgid "User Preferences API"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:30
+#, fuzzy
+msgid "User Preferences"
+msgstr "Riferimento ZCML"
+
+#: src/zope/app/preference/configure.zcml:70
+msgid "A Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:70
+#: src/zope/app/preference/configure.zcml:77
+msgid "Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:77
+msgid ""
+"           This component lets you define the local default user           "
+"preferences. The values of this provider are used, if the           user has "
+"not made a selection yet."
+msgstr ""
+
+#: src/zope/app/preference/menu.pt:5
+#, fuzzy
+msgid "Preferences"
+msgstr "Riferimento ZCML"
+
 #: src/zope/app/presentation/browser.zcml:15
 msgid "Change page"
 msgstr "Cambia pagina"
@@ -4537,44 +4612,29 @@
 msgid "Recorded Sessions"
 msgstr "Definisci i permessi"
 
-#: src/zope/app/recorder/sessions.pt:12
-msgid "There are no recorded requests that pass your filter."
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:21 src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr "Tempo"
-
 # Default: "Metodi"
-#: src/zope/app/recorder/sessions.pt:22
+#: src/zope/app/recorder/sessions.pt:16
 #, fuzzy
 msgid "Method"
 msgstr "Metodi"
 
-#: src/zope/app/recorder/sessions.pt:24
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr "Stato"
-
-#: src/zope/app/recorder/sessions.pt:4
-#, fuzzy
-msgid "Recorded HTTP Sessions"
-msgstr "Definisci i permessi"
-
-#: src/zope/app/recorder/sessions.pt:42
+#: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:44
+#: src/zope/app/recorder/sessions.pt:38
 msgid "Clear All"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:64
+#: src/zope/app/recorder/sessions.pt:57
 #, fuzzy
 msgid "Filter"
 msgstr "File:"
 
+#: src/zope/app/recorder/sessions.pt:6
+msgid "There are no recorded requests that pass your filter."
+msgstr ""
+
 #: src/zope/app/renderer/configure.zcml:14
 msgid "Plain Text Source"
 msgstr "Sorgente Testo Piano"
@@ -4996,11 +5056,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr "Sei loggato come ${UserTitle}."
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr "Torna alla pagina principale."
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr "Login effettuato con successo!"
@@ -5020,6 +5075,11 @@
 "Procedura di login annullata. <a href=\"\"> Clicka qui per tornare indietro. "
 "</a>"
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr "Torna alla pagina principale."
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr "Logout avvenuto con successo!"
@@ -6338,149 +6398,114 @@
 msgid "Id as which this permission will be known and used."
 msgstr ""
 
-#: src/zwiki/browser/configure.zcml:109 src/zwiki/browser/configure.zcml:161
 #, fuzzy
-msgid "Parents"
-msgstr "Stampa"
+#~ msgid "Transaction API"
+#~ msgstr "Elementi delle transizioni"
 
-#: src/zwiki/browser/configure.zcml:134 src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
+#~ msgid "Could not retrieve runtime information."
+#~ msgstr "Non riesco a recuperare informazioni di runtime."
+
 #, fuzzy
-msgid "Comment"
-msgstr "Comando"
+#~ msgid "Recorded HTTP Sessions"
+#~ msgstr "Definisci i permessi"
 
-#: src/zwiki/browser/configure.zcml:143
 #, fuzzy
-msgid "A Comment"
-msgstr "Aggiungi Contenuto"
+#~ msgid "Parents"
+#~ msgstr "Stampa"
 
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr "Menu per le azioni colegate a Wiki Page."
+#, fuzzy
+#~ msgid "Comment"
+#~ msgstr "Comando"
 
-#: src/zwiki/browser/configure.zcml:168
 #, fuzzy
-msgid "Table of Contents"
-msgstr "Contenuto"
+#~ msgid "A Comment"
+#~ msgstr "Aggiungi Contenuto"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr ""
+#~ msgid "Menu for Wiki Page related actions."
+#~ msgstr "Menu per le azioni colegate a Wiki Page."
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr "Un Wiki"
+#, fuzzy
+#~ msgid "Table of Contents"
+#~ msgstr "Contenuto"
 
-#: src/zwiki/browser/configure.zcml:24 src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr "Indice"
+#~ msgid "A Wiki"
+#~ msgstr "Un Wiki"
 
-#: src/zwiki/browser/configure.zcml:32 src/zwiki/browser/configure.zcml:169
+#~ msgid "TOC"
+#~ msgstr "Indice"
+
 #, fuzzy
-msgid "Search"
-msgstr "Servizio"
+#~ msgid "Search"
+#~ msgstr "Servizio"
 
-#: src/zwiki/browser/configure.zcml:44 src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163 src/zwiki/browser/configure.zcml:170
 #, fuzzy
-msgid "Subscriptions"
-msgstr "Descrizione"
+#~ msgid "Subscriptions"
+#~ msgstr "Descrizione"
 
-#: src/zwiki/browser/configure.zcml:76
 #, fuzzy
-msgid "Change Wiki Page"
-msgstr "Cambia pagina"
+#~ msgid "Change Wiki Page"
+#~ msgstr "Cambia pagina"
 
-#: src/zwiki/browser/configure.zcml:8
 #, fuzzy
-msgid "Add Wiki"
-msgstr "Aggiungi un'utilità"
+#~ msgid "Add Wiki"
+#~ msgstr "Aggiungi un'utilità"
 
-#: src/zwiki/configure.zcml:14
 #, fuzzy
-msgid "Wiki User"
-msgstr "Modifica utente"
+#~ msgid "Wiki User"
+#~ msgstr "Modifica utente"
 
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr "Visitatori del Wiki, possono solo vedere e commentare i wiki."
+#~ msgid "Wiki visitors, which can only view and comment on wikis."
+#~ msgstr "Visitatori del Wiki, possono solo vedere e commentare i wiki."
 
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr "Una Wiki Page"
+#~ msgid "A Wiki Page"
+#~ msgstr "Una Wiki Page"
 
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr ""
+#~ msgid "A Wiki Page Comment"
+#~ msgstr "Un Pagina di Commento Wiki"
 
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr "Un Pagina di Commento Wiki"
+#~ msgid "Wiki Page Comment"
+#~ msgstr "Pagina di Commento Wiki"
 
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr "Pagina di Commento Wiki"
+#~ msgid "The Wiki Editor can create and edit wikis."
+#~ msgstr "Il Wiki Editor può creare e modificare i wiki"
 
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr "Il Wiki Editor può creare e modificare i wiki"
-
-#: src/zwiki/configure.zcml:19
 #, fuzzy
-msgid "Wiki Editor"
-msgstr "Modulo di modifica"
+#~ msgid "Wiki Editor"
+#~ msgstr "Modulo di modifica"
 
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr "Amministratore Wiki"
+#~ msgid "Wiki Administrator"
+#~ msgstr "Amministratore Wiki"
 
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr "L'amministratore del Wiki può gestire totalemente le pagine wiki."
+#~ msgid "The Wiki Admin can fully manage wiki pages."
+#~ msgstr "L'amministratore del Wiki può gestire totalemente le pagine wiki."
 
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr "Mostra Pagina Wiki"
+#~ msgid "View Wiki Page"
+#~ msgstr "Mostra Pagina Wiki"
 
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr "Mostra una Pagina Wiki"
+#~ msgid "View a Wiki Page"
+#~ msgstr "Mostra una Pagina Wiki"
 
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr "Commento su una Pagina Wiki"
+#~ msgid "Comment on Wiki Page"
+#~ msgstr "Commento su una Pagina Wiki"
 
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr "Commenta una Pagina Wiki"
+#~ msgid "Make a comment on Wiki Page"
+#~ msgstr "Commenta una Pagina Wiki"
 
-#: src/zwiki/configure.zcml:47 src/zwiki/browser/configure.zcml:60
 #, fuzzy
-msgid "Add Wiki Page"
-msgstr "Aggiungi una ZPT"
+#~ msgid "Add Wiki Page"
+#~ msgstr "Aggiungi una ZPT"
 
-#: src/zwiki/configure.zcml:56
 #, fuzzy
-msgid "Edit Wiki Page"
-msgstr "Modifica una ZPT"
+#~ msgid "Edit Wiki Page"
+#~ msgstr "Modifica una ZPT"
 
-#: src/zwiki/configure.zcml:65
 #, fuzzy
-msgid "Delete Wiki Page"
-msgstr "Cancella i messaggi"
+#~ msgid "Delete Wiki Page"
+#~ msgstr "Cancella i messaggi"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr ""
+#~ msgid "Minimal Wiki Page Container implementation "
+#~ msgstr "Implementazione minimale di un Contenitore per Pagine Wiki"
 
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr "Implementazione minimale di un Contenitore per Pagine Wiki"
-
 #~ msgid "Bases"
 #~ msgstr "Basi"
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/pt_BR/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/pt_BR/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/pt_BR/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,7 +4,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Zope X3 Pre-M4\n"
-"POT-Creation-Date: Fri Apr 01 19:40:34 2005\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: 2003-08-07 18:51-0300\n"
 "Last-Translator: Sidnei da Silva <sidnei at plone.org>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -113,7 +113,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:211
-msgid "Form Parse"
+msgid "Form Parser"
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:22
@@ -225,30 +225,26 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-msgid "Transaction API"
-msgstr ""
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 msgid "Connection Management"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 msgid "Sub-Transactions"
 msgstr ""
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 #, fuzzy
 msgid "Schema Fields"
 msgstr "Selecionar um arquivo"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 #, fuzzy
 msgid "Interfaces and Schemas"
@@ -268,7 +264,7 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:68
-#: src/zope/app/apidoc/ifacemodule/index.pt:275
+#: src/zope/app/apidoc/ifacemodule/index.pt:280
 #, fuzzy
 msgid "Factories"
 msgstr "Entradas"
@@ -379,17 +375,6 @@
 msgid "Attributes/Properties"
 msgstr ""
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr ""
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr ""
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -423,6 +408,17 @@
 msgid "Documentation String"
 msgstr ""
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr ""
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr ""
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 #, fuzzy
 msgid "Directly provided interfaces"
@@ -522,11 +518,11 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 msgid "<subscription>"
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:202 src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr ""
 
@@ -557,6 +553,16 @@
 msgid "zope.app.apidoc.UseAPIDoc"
 msgstr ""
 
+#: src/zope/app/apidoc/configure.zcml:68
+msgid "API Doc Tool"
+msgstr ""
+
+#: src/zope/app/apidoc/configure.zcml:68
+msgid ""
+"          These are all the preferences related to viewing the API          "
+"documtation."
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:13
 msgid "(line ${line})"
 msgstr ""
@@ -565,6 +571,27 @@
 msgid "(name: ${name})"
 msgstr ""
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+#, fuzzy
+msgid "registered:"
+msgstr "Limpar"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr ""
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr ""
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 #, fuzzy
 msgid "No interface provided."
@@ -579,7 +606,7 @@
 msgid "Class:"
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/configure.zcml:70
+#: src/zope/app/apidoc/ifacemodule/configure.zcml:69
 #, fuzzy
 msgid "Interface Details"
 msgstr "Nome"
@@ -659,12 +686,12 @@
 msgid "There are no adapters registered for this interface."
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:270
+#: src/zope/app/apidoc/ifacemodule/index.pt:275
 #, fuzzy
 msgid "Other Information"
 msgstr "Informações de tempo de execução"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:277
+#: src/zope/app/apidoc/ifacemodule/index.pt:282
 msgid "A list of factories that create objects implementing this interface."
 msgstr ""
 
@@ -673,15 +700,15 @@
 msgid "Base interfaces"
 msgstr "Nome"
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:292
+#: src/zope/app/apidoc/ifacemodule/index.pt:297
 msgid "A list of utilities that are are registered to provide this interface."
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:305
+#: src/zope/app/apidoc/ifacemodule/index.pt:310
 msgid "Classes"
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/index.pt:307
+#: src/zope/app/apidoc/ifacemodule/index.pt:312
 msgid ""
 "A list of classes that implement this interface. This might duplicate the "
 "entries in Utilities."
@@ -719,31 +746,10 @@
 msgid "Interface Finder:"
 msgstr "Nome"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-#, fuzzy
-msgid "registered:"
-msgstr "Limpar"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr ""
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr ""
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr ""
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 msgid "layer:"
 msgstr ""
@@ -760,14 +766,6 @@
 msgid "Permission:"
 msgstr ""
 
-#: src/zope/app/apidoc/preference/configure.zcml:43
-msgid "User Preferences API"
-msgstr ""
-
-#: src/zope/app/apidoc/preference/menu.pt:5
-msgid "Preferences"
-msgstr ""
-
 #: src/zope/app/apidoc/typemodule/type.py:100
 #, fuzzy
 msgid "Interface Types"
@@ -786,17 +784,20 @@
 msgstr ""
 
 #: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:58
 msgid "n/a"
 msgstr ""
 
-#: src/zope/app/apidoc/utilitymodule/index.pt:19
+#: src/zope/app/apidoc/utilitymodule/index.pt:12
+msgid "(Name: \"${name}\")"
+msgstr ""
+
+#: src/zope/app/apidoc/utilitymodule/index.pt:20
 #, fuzzy
 msgid "Component:"
 msgstr "Conteúdo"
 
 #: src/zope/app/apidoc/utilitymodule/utilitymodule.py:87
-#: src/zope/app/apidoc/ifacemodule/index.pt:290
+#: src/zope/app/apidoc/ifacemodule/index.pt:295
 msgid "Utilities"
 msgstr ""
 
@@ -878,92 +879,97 @@
 "Namespaces that are not full URLs start with \"http://namespaces.zope.org/\"."
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:10
-msgid "Server Control"
-msgstr "Controle do Servidor"
-
-#: src/zope/app/applicationcontrol/browser/configure.zcml:15
+#: src/zope/app/applicationcontrol/browser/configure.zcml:25
 msgid "Runtime Information"
 msgstr "Informações de tempo de execução"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:24
+#: src/zope/app/applicationcontrol/browser/configure.zcml:29
+msgid "Server Control"
+msgstr "Controle do Servidor"
+
+#: src/zope/app/applicationcontrol/browser/configure.zcml:35
 msgid "ZODB Control"
 msgstr "Controle do ZODB"
 
-#: src/zope/app/applicationcontrol/browser/configure.zcml:41
+#: src/zope/app/applicationcontrol/browser/configure.zcml:52
 msgid "Manage Process"
 msgstr "Gerenciar Processos"
 
 #: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:11
 #, fuzzy
+msgid "Uptime"
+msgstr "Rodando a:"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:16
+#, fuzzy
+msgid "System platform"
+msgstr "Plataforma:"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:21
+#, fuzzy
 msgid "Zope version"
 msgstr "Versão do Zope:"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:15
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:26
 #, fuzzy
 msgid "Python version"
 msgstr "Versão do Python:"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:19
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
 #, fuzzy
-msgid "System platform"
-msgstr "Plataforma:"
+msgid "Command line"
+msgstr "Linha de comando:"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:23
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:36
 msgid "Preferred encoding"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:27
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
+msgid "Zope Runtime Information"
+msgstr "Informações de tempo de execução do Zope"
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:41
 msgid "FileSytem encoding"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:31
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:46
 #, fuzzy
-msgid "Command line"
-msgstr "Linha de comando:"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:35
-#, fuzzy
 msgid "Process id"
 msgstr "Id do Processo:"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:39
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:51
 #, fuzzy
-msgid "Uptime"
-msgstr "Rodando a:"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:4
-msgid "Zope Runtime Information"
-msgstr "Informações de tempo de execução do Zope"
-
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:43
-#, fuzzy
 msgid "Python path"
 msgstr "Caminho do Python"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:47
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:37
+#: src/zope/app/applicationcontrol/runtimeinfo.py:71
+msgid "Unavailable"
+msgstr ""
+
+#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:67
 msgid "${days} day(s) ${hours}:${minutes}:${seconds}"
 msgstr "${days} dia(s) ${hours}:${minutes}:{seconds}"
 
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.py:68
+#: src/zope/app/applicationcontrol/browser/server-control.pt:10
 #, fuzzy
-msgid "Could not retrieve runtime information."
-msgstr "Informações de tempo de execução do Zope"
+msgid "Shutdown time"
+msgstr "Desligar servidor"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:11
+#: src/zope/app/applicationcontrol/browser/server-control.pt:14
 msgid "seconds"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:13
+#: src/zope/app/applicationcontrol/browser/server-control.pt:15
 msgid ""
 "If you specify a time of 0 seconds, then the server will do a hard shutdown."
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:18
+#: src/zope/app/applicationcontrol/browser/server-control.pt:24
 msgid "Restart server"
 msgstr "Reiniciar servidor"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:21
+#: src/zope/app/applicationcontrol/browser/server-control.pt:27
 msgid "Shutdown server"
 msgstr "Desligar servidor"
 
@@ -971,11 +977,6 @@
 msgid "Zope Stub Server Controller"
 msgstr "Controlador do Servidor Zope"
 
-#: src/zope/app/applicationcontrol/browser/server-control.pt:9
-#, fuzzy
-msgid "Shutdown time:"
-msgstr "Desligar servidor"
-
 #: src/zope/app/applicationcontrol/browser/servercontrol.py:34
 msgid "You restarted the server."
 msgstr "Você reiniciou o servidor."
@@ -988,42 +989,46 @@
 msgid "Domain"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 #, fuzzy
 msgid "reload-button"
 msgstr "Upload"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
 msgstr ""
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
-msgid "Name of database: ${name}"
-msgstr ""
+#, fuzzy
+msgid "Name of database"
+msgstr "Tamanho do arquivo: ${size}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:15
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:16
 #, fuzzy
-msgid "Size of database: ${size}"
+msgid "Size of database"
 msgstr "Tamanho do arquivo: ${size}"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:25
-msgid "Keep up to:"
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:28
+#, fuzzy
+msgid "Keep up to"
 msgstr "Manter em:"
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:29
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:32
 msgid "days"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:34
+#: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:37
 msgid "pack-button"
 msgstr ""
 
@@ -1340,8 +1345,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
-#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 #: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
+#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 msgid "save-changes-button"
 msgstr "Salvar Modificações"
 
@@ -1350,22 +1355,21 @@
 msgstr ""
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
-#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/cache/browser/ramstats.pt:38
-#: src/zope/app/applicationcontrol/browser/runtimeinfo.pt:52
+#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1422,7 +1426,7 @@
 msgstr "Você pode configurar um RAM Cache aqui."
 
 #: src/zope/app/cache/browser/ramstats.pt:21
-#: src/zope/app/recorder/sessions.pt:23
+#: src/zope/app/recorder/sessions.pt:17
 msgid "Path"
 msgstr "Caminho"
 
@@ -1795,18 +1799,22 @@
 msgid "The interface provided by the utility"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:104
+#: src/zope/app/component/interfaces/registration.py:100
+msgid "The interface the component provides through this registration."
+msgstr ""
+
+#: src/zope/app/component/interfaces/registration.py:106
 msgid "The permission needed to use the component"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:212
+#: src/zope/app/component/interfaces/registration.py:214
 #: src/zope/app/component/configure.zcml:9
 #: src/zope/app/component/browser/editregistration.pt:4
 #: src/zope/app/component/browser/editregistration.pt:11
 msgid "Registration Manager"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:213
+#: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
 msgstr ""
 
@@ -1822,23 +1830,19 @@
 msgid "Registration status"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:92
+#: src/zope/app/component/interfaces/registration.py:94
 msgid "Registration Component"
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:93
+#: src/zope/app/component/interfaces/registration.py:95
 msgid "The component the registration is for."
 msgstr ""
 
-#: src/zope/app/component/interfaces/registration.py:97
+#: src/zope/app/component/interfaces/registration.py:99
 #, fuzzy
 msgid "Component Interface"
 msgstr "Conteúdo"
 
-#: src/zope/app/component/interfaces/registration.py:98
-msgid "The interface the component provides through this registration."
-msgstr ""
-
 #: src/zope/app/component/metadirectives.py:112
 msgid "View attributes that are also allowed if the user has permission."
 msgstr ""
@@ -2468,6 +2472,20 @@
 msgid "File name of the data file."
 msgstr ""
 
+#: src/zope/app/demo/skinpref/configure.zcml:15
+msgid "ZMI Settings"
+msgstr ""
+
+#: src/zope/app/demo/skinpref/configure.zcml:15
+msgid ""
+"         In this category you will find all preferences related to the "
+"Zope         Management Interface (ZMI).         "
+msgstr ""
+
+#: src/zope/app/demo/skinpref/configure.zcml:25
+msgid "Skin Selection"
+msgstr ""
+
 #: src/zope/app/demo/widget/browser/boolwidget.zcml:21
 #, fuzzy
 msgid "BoolWidget Index"
@@ -2477,7 +2495,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101 src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr ""
 
@@ -2523,27 +2540,24 @@
 
 #: src/zope/app/demo/widget/browser/popup.pt:36
 #: src/zope/app/schema/browser/schema_edit.pt:21
-#: src/zope/app/apidoc/preference/edit.pt:78
 #: src/zope/app/form/browser/add.pt:23 src/zope/app/form/browser/edit.pt:24
 msgid "There are ${num_errors} input errors."
 msgstr ""
 
 #: src/zope/app/demo/widget/browser/popup.pt:65
-#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/file/browser/file_upload.pt:50
+#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
-#: src/zope/app/apidoc/preference/edit.pt:113
 #: src/zope/app/component/browser/editregistration.pt:48
 #: src/zope/app/form/browser/add.pt:51 src/zope/app/form/browser/edit.pt:51
 msgid "refresh-button"
 msgstr ""
 
 #: src/zope/app/demo/widget/browser/popup.pt:67
-#: src/zope/app/apidoc/preference/edit.pt:115
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr ""
 
@@ -2842,8 +2856,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
-#: src/zope/app/cache/browser/ramedit.pt:10
 #: src/zope/app/cache/browser/ramstats.pt:11
+#: src/zope/app/cache/browser/ramedit.pt:10
 msgid "Errors"
 msgstr ""
 
@@ -2877,6 +2891,12 @@
 msgid "No exceptions logged."
 msgstr ""
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr ""
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -3006,7 +3026,7 @@
 msgid "Change a file"
 msgstr "Modificar um arquivo"
 
-#: src/zope/app/file/browser/file.py:167
+#: src/zope/app/file/browser/file.py:179
 #: src/zope/app/form/browser/editview.py:114
 msgid "Updated on ${date_time}"
 msgstr ""
@@ -3014,8 +3034,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
-#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/container/browser/contents.pt:149
+#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr ""
@@ -3081,23 +3101,26 @@
 msgstr ""
 
 #: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
-#: src/zope/app/file/browser/file_add.pt:15
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "Content Type"
 msgstr ""
 
-#: src/zope/app/file/interfaces.py:28 src/zope/app/file/browser/file_add.pt:15
+#: src/zope/app/file/interfaces.py:28
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr ""
 
-#: src/zope/app/file/interfaces.py:35 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:35
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr ""
 
-#: src/zope/app/file/interfaces.py:36 src/zope/app/file/browser/file_add.pt:30
+#: src/zope/app/file/interfaces.py:36
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr ""
 
@@ -3129,16 +3152,6 @@
 msgid "An error occured."
 msgstr ""
 
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr ""
-
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr ""
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr ""
@@ -3180,6 +3193,16 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr ""
+
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr ""
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr ""
@@ -3216,26 +3239,26 @@
 msgstr "Adicionar"
 
 # Default: "Selected"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr ""
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr ""
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
 msgstr ""
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr ""
 
@@ -3376,15 +3399,26 @@
 msgstr "Administrador"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
+msgid ""
+"Whether home folders should be created upon adding a assignment, if missing."
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:52
-msgid "Local Home Folder Role"
+msgid "Auto create assignment"
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:53
 msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:59
+msgid "Local Home Folder Role"
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:60
+msgid ""
 "The local role that the user will have in its home folder. This role is only "
 "set on folders that are created by the manager."
 msgstr ""
@@ -3409,7 +3443,7 @@
 msgstr ""
 
 #: src/zope/app/i18n/browser/configure.zcml:5
-#: src/zope/app/applicationcontrol/browser/configure.zcml:32
+#: src/zope/app/applicationcontrol/browser/configure.zcml:43
 #: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:4
 msgid "Translation Domains"
 msgstr ""
@@ -3430,22 +3464,10 @@
 msgid "Here you can export and import messages from your Translation Domain."
 msgstr ""
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr ""
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr ""
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr ""
-
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
 msgstr ""
@@ -3470,10 +3492,9 @@
 msgid "synchronize-button"
 msgstr ""
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
 msgstr ""
 
 #: src/zope/app/i18n/browser/synchronize.py:34
@@ -3508,10 +3529,22 @@
 msgid "Delete Messages"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr ""
@@ -3524,6 +3557,12 @@
 msgid "filter-button"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr ""
@@ -3939,7 +3978,6 @@
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
 #: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76 src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Editar"
@@ -3952,6 +3990,34 @@
 msgid "The password for the user."
 msgstr ""
 
+#: src/zope/app/preference/configure.zcml:116
+msgid "User Preferences API"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:30
+msgid "User Preferences"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:70
+msgid "A Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:70
+#: src/zope/app/preference/configure.zcml:77
+msgid "Default User Preferences Provider"
+msgstr ""
+
+#: src/zope/app/preference/configure.zcml:77
+msgid ""
+"           This component lets you define the local default user           "
+"preferences. The values of this provider are used, if the           user has "
+"not made a selection yet."
+msgstr ""
+
+#: src/zope/app/preference/menu.pt:5
+msgid "Preferences"
+msgstr ""
+
 #: src/zope/app/presentation/browser.zcml:15
 msgid "Change page"
 msgstr ""
@@ -4312,40 +4378,26 @@
 msgid "Recorded Sessions"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:12
-msgid "There are no recorded requests that pass your filter."
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:21 src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:22
+#: src/zope/app/recorder/sessions.pt:16
 msgid "Method"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:24
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:4
-msgid "Recorded HTTP Sessions"
-msgstr ""
-
-#: src/zope/app/recorder/sessions.pt:42
+#: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:44
+#: src/zope/app/recorder/sessions.pt:38
 msgid "Clear All"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:64
+#: src/zope/app/recorder/sessions.pt:57
 msgid "Filter"
 msgstr ""
 
+#: src/zope/app/recorder/sessions.pt:6
+msgid "There are no recorded requests that pass your filter."
+msgstr ""
+
 #: src/zope/app/renderer/configure.zcml:14
 msgid "Plain Text Source"
 msgstr ""
@@ -4749,11 +4801,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr ""
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr ""
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr ""
@@ -4770,6 +4817,11 @@
 msgid "You cancelled the login procedure."
 msgstr ""
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr ""
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr ""
@@ -5982,141 +6034,30 @@
 msgid "Id as which this permission will be known and used."
 msgstr ""
 
-#: src/zwiki/browser/configure.zcml:109 src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr ""
+#, fuzzy
+#~ msgid "Could not retrieve runtime information."
+#~ msgstr "Informações de tempo de execução do Zope"
 
-#: src/zwiki/browser/configure.zcml:134 src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
 #, fuzzy
-msgid "Comment"
-msgstr "Conteúdo"
+#~ msgid "Comment"
+#~ msgstr "Conteúdo"
 
-#: src/zwiki/browser/configure.zcml:143
 #, fuzzy
-msgid "A Comment"
-msgstr "Adicionar Conteúdo"
+#~ msgid "A Comment"
+#~ msgstr "Adicionar Conteúdo"
 
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:168
 #, fuzzy
-msgid "Table of Contents"
-msgstr "Conteúdo"
+#~ msgid "Table of Contents"
+#~ msgstr "Conteúdo"
 
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:24 src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:32 src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:44 src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163 src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:76
 #, fuzzy
-msgid "Change Wiki Page"
-msgstr "Modificar um arquivo"
+#~ msgid "Change Wiki Page"
+#~ msgstr "Modificar um arquivo"
 
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr ""
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr ""
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:144 src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr ""
-
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr ""
-
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:47 src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:56
 #, fuzzy
-msgid "Edit Wiki Page"
-msgstr "Editar uma página ZPT"
+#~ msgid "Edit Wiki Page"
+#~ msgstr "Editar uma página ZPT"
 
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr ""
-
 #, fuzzy
 #~ msgid "Change Realm"
 #~ msgstr "Modificar um arquivo"

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.mo
===================================================================
(Binary files differ)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.po
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.po	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/ru/LC_MESSAGES/zope.po	2005-05-02 07:44:19 UTC (rev 30224)
@@ -16,8 +16,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Development/Revision: 29457\n"
-"POT-Creation-Date: Mon Mar 21 14:46:57 2005\n"
-"PO-Revision-Date: 2005-04-02 22:42+0300\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
+"PO-Revision-Date: 2005-04-16 22:34+0300\n"
 "Last-Translator: Dmitry Vasiliev <dima at hlabs.spb.ru>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
 "MIME-Version: 1.0\n"
@@ -51,14 +51,16 @@
 msgid ""
 "\n"
 "    This is a developer's book compiled from all existing documentation\n"
-"    files. It is not meant to be a complete or cohesive work, but each chapter\n"
+"    files. It is not meant to be a complete or cohesive work, but each "
+"chapter\n"
 "    in itself is a little story. Think about it like a collection of fairy\n"
 "    tales.\n"
 "    "
 msgstr ""
 "\n"
 "    Книга разработчика собранная из файлов документации.\n"
-"    Эта книга не претендует быть полной или цельной, скорее каждая глава - это     своя небольшая история.\n"
+"    Эта книга не претендует быть полной или цельной, скорее каждая глава - "
+"это     своя небольшая история.\n"
 "    "
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:105
@@ -233,29 +235,25 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-msgid "Transaction API"
-msgstr "API управления транзакциями"
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr "Объектная БД Zope (ZODB)"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 msgid "Connection Management"
 msgstr "Управление соединениями"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 msgid "Sub-Transactions"
 msgstr "Вложенные транзакции"
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 msgid "Schema Fields"
 msgstr "Поля схем"
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 msgid "Interfaces and Schemas"
 msgstr "Интерфейсы и схемы"
@@ -294,8 +292,16 @@
 msgstr ""
 
 #: src/zope/app/apidoc/browser/contents.pt:15
-msgid "Modules are usually depending on each other by using links that create references across all modules. Each module has a \"theme\" that it follows, which was designed to aid the developer directly to the desired information. Below you see a short description of every module."
-msgstr "Модули документации обычно взаимосвязанны друг с другом через ссылки между модулями. Каждый модуль описывает одну из \"тем\" позволяющих упростить поиск необходимой документации. Ниже дано краткое описание каждого модуля документации."
+msgid ""
+"Modules are usually depending on each other by using links that create "
+"references across all modules. Each module has a \"theme\" that it follows, "
+"which was designed to aid the developer directly to the desired information. "
+"Below you see a short description of every module."
+msgstr ""
+"Модули документации обычно взаимосвязанны друг с другом через ссылки между "
+"модулями. Каждый модуль описывает одну из \"тем\" позволяющих упростить "
+"поиск необходимой документации. Ниже дано краткое описание каждого модуля "
+"документации."
 
 #: src/zope/app/apidoc/browser/contents.pt:5
 #: src/zope/app/apidoc/browser/index.pt:3
@@ -303,12 +309,26 @@
 msgstr "Документация по Zope 3 API"
 
 #: src/zope/app/apidoc/browser/contents.pt:7
-msgid "Welcome to the Zope 3 API documentation tool. The documentation provided here is separated in several discrete documentation modules. You can see the list of available modules in the top-left box on your screen. When you click on a module, the module's menu will appear below. In the menu you have then navigational means to access the documentation content of the module."
-msgstr "Добро пожаловать на страницу документации по Zope 3 API. Документация расположенная здесь разбита на несколько отдельных модулей. Список доступных модулей показан в верхнем-левом окне экрана. При выборе конкретного модуля в окне ниже появится меню выбранного модуля. Меню позволяет получить доступ к документации содержащейся в модуле."
+msgid ""
+"Welcome to the Zope 3 API documentation tool. The documentation provided "
+"here is separated in several discrete documentation modules. You can see the "
+"list of available modules in the top-left box on your screen. When you click "
+"on a module, the module's menu will appear below. In the menu you have then "
+"navigational means to access the documentation content of the module."
+msgstr ""
+"Добро пожаловать на страницу документации по Zope 3 API. Документация "
+"расположенная здесь разбита на несколько отдельных модулей. Список доступных "
+"модулей показан в верхнем-левом окне экрана. При выборе конкретного модуля в "
+"окне ниже появится меню выбранного модуля. Меню позволяет получить доступ к "
+"документации содержащейся в модуле."
 
 #: src/zope/app/apidoc/browser/menu.pt:6
-msgid "Click on one of the Documentation Modules above and a menu for this module will appear."
-msgstr "Меню конкретного модуля документации будет показано после выбора модуля из списка выше."
+msgid ""
+"Click on one of the Documentation Modules above and a menu for this module "
+"will appear."
+msgstr ""
+"Меню конкретного модуля документации будет показано после выбора модуля из "
+"списка выше."
 
 #: src/zope/app/apidoc/browser/menu_macros.pt:11
 #: src/zope/app/apidoc/browser/details_macros.pt:10
@@ -371,17 +391,6 @@
 msgid "Attributes/Properties"
 msgstr "Атрибуты"
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr "тип:"
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr "Значение:"
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -415,6 +424,17 @@
 msgid "Documentation String"
 msgstr "Строка документации"
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr "тип:"
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr "Значение:"
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 msgid "Directly provided interfaces"
 msgstr "Непосредственно предоставляемые интерфейсы"
@@ -461,30 +481,45 @@
 "    two methods to navigate through the modules to find the classes you are\n"
 "    interested in.\n"
 "\n"
-"    The first method is to type in some part of the Python path of the class\n"
-"    and the module will look in the class registry for matches. The menu will\n"
+"    The first method is to type in some part of the Python path of the "
+"class\n"
+"    and the module will look in the class registry for matches. The menu "
+"will\n"
 "    then return with a list of these matches.\n"
 "\n"
-"    The second method is to click on the \"Browse Zope Source\" link. In the\n"
+"    The second method is to click on the \"Browse Zope Source\" link. In "
+"the\n"
 "    main window, you will see a directory listing with the root Zope 3\n"
-"    modules. You can click on the module names to discover their content. If a\n"
+"    modules. You can click on the module names to discover their content. If "
+"a\n"
 "    class is found, it is represented as a bold entry in the list.\n"
 "\n"
 "    The documentation contents of a class provides you with an incredible\n"
-"    amount of information. Not only does it tell you about its base classes,\n"
+"    amount of information. Not only does it tell you about its base "
+"classes,\n"
 "    implemented interfaces, attributes and methods, but it also lists the\n"
 "    interface that requires a method or attribute to be implemented and the\n"
 "    permissions required to access it.\n"
 "    "
 msgstr ""
 "\n"
-"    Данный модуль позволяет получить информацию о модулях и классах определенных в Zope 3 и вспомогательных пакетах. Данный модуль поддерживает два способа навигации для поиска интересующих классов.\n"
+"    Данный модуль позволяет получить информацию о модулях и классах "
+"определенных в Zope 3 и вспомогательных пакетах. Данный модуль поддерживает "
+"два способа навигации для поиска интересующих классов.\n"
 "\n"
-"    Первый способ - набрать часть пути Python до интересующего класса и модуль будет искать совпадения в реестре классов. Затем список найденных объектов будет показан в меню.\n"
+"    Первый способ - набрать часть пути Python до интересующего класса и "
+"модуль будет искать совпадения в реестре классов. Затем список найденных "
+"объектов будет показан в меню.\n"
 "\n"
-"    Второй способ - нажать на ссылку \"Просмотр исходного кода Zope 3\" и в основном окне будут показаны модули верхнего уровня Zope 3. Далее можно выбирать модули для просмотра их содержимого, если будут найдены классы они будут выделены жирным шрифтом.\n"
+"    Второй способ - нажать на ссылку \"Просмотр исходного кода Zope 3\" и в "
+"основном окне будут показаны модули верхнего уровня Zope 3. Далее можно "
+"выбирать модули для просмотра их содержимого, если будут найдены классы они "
+"будут выделены жирным шрифтом.\n"
 "\n"
-"    Документация по классам предоставляет огромное количество информации. Не только базовые классы, реализуемые интерфейсы, атрибуты и методы, но также и интерфейс требующий реализации того или иного метода или атрибута и права необходимые для доступа к методам и атрибутам."
+"    Документация по классам предоставляет огромное количество информации. Не "
+"только базовые классы, реализуемые интерфейсы, атрибуты и методы, но также и "
+"интерфейс требующий реализации того или иного метода или атрибута и права "
+"необходимые для доступа к методам и атрибутам."
 
 #: src/zope/app/apidoc/codemodule/codemodule.py:77
 msgid "Zope 3 root."
@@ -517,12 +552,11 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 msgid "<subscription>"
 msgstr "<подписка>"
 
-#: src/zope/app/apidoc/component.py:202
-#: src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208 src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr "<i>без названия</i>"
 
@@ -557,7 +591,9 @@
 msgstr ""
 
 #: src/zope/app/apidoc/configure.zcml:68
-msgid "          These are all the preferences related to viewing the API          documtation."
+msgid ""
+"          These are all the preferences related to viewing the API          "
+"documtation."
 msgstr ""
 
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:13
@@ -568,6 +604,26 @@
 msgid "(name: ${name})"
 msgstr "(имя: ${name})"
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+msgid "registered:"
+msgstr "зарегистрирован:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr "требует:"
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr "Нет требуемых интерфейсов."
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr "предоставляет:"
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 msgid "No interface provided."
 msgstr "Нет предоставляемых интерфейсов."
@@ -622,7 +678,8 @@
 "\n"
 "    All used and important interfaces are registered through the site\n"
 "    manager. While it would be possible to just list all attributes, it is\n"
-"    hard on the user to read such an overfull list. Therefore, interfaces that\n"
+"    hard on the user to read such an overfull list. Therefore, interfaces "
+"that\n"
 "    have partial common module paths are bound together.\n"
 "\n"
 "    The documentation of an interface also provides a wide variety of\n"
@@ -632,9 +689,13 @@
 "    "
 msgstr ""
 "\n"
-"    Все используемые и необходимые интерфейсы зарегистрированны через менеджер сайта. Для упрощения поиска интерфейсы, которые имеют общий путь к модулю, объединены в меню в группы.\n"
+"    Все используемые и необходимые интерфейсы зарегистрированны через "
+"менеджер сайта. Для упрощения поиска интерфейсы, которые имеют общий путь к "
+"модулю, объединены в меню в группы.\n"
 "\n"
-"    Документация к интерфейсу предоставляет множество информации, включая, конечно, определенные для интерфейса атрибуты/поля и методы, но также и доступные адаптеры и утилиты, предоставляющие данный интерфейс. "
+"    Документация к интерфейсу предоставляет множество информации, включая, "
+"конечно, определенные для интерфейса атрибуты/поля и методы, но также и "
+"доступные адаптеры и утилиты, предоставляющие данный интерфейс. "
 
 #: src/zope/app/apidoc/ifacemodule/index.pt:101
 msgid "Extended Adapters"
@@ -682,8 +743,12 @@
 msgstr "Классы"
 
 #: src/zope/app/apidoc/ifacemodule/index.pt:312
-msgid "A list of classes that implement this interface. This might duplicate the entries in Utilities."
-msgstr "Список классов реализующих данный интерфейс. Классы из данного списка могут также повторяться в списке утилит."
+msgid ""
+"A list of classes that implement this interface. This might duplicate the "
+"entries in Utilities."
+msgstr ""
+"Список классов реализующих данный интерфейс. Классы из данного списка могут "
+"также повторяться в списке утилит."
 
 #: src/zope/app/apidoc/ifacemodule/index.pt:44
 msgid "There are no base interfaces."
@@ -713,30 +778,10 @@
 msgid "Interface Finder:"
 msgstr "Поиск интерфейсов:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-msgid "registered:"
-msgstr "зарегистрирован:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr "тип представления:"
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr "требует:"
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr "Нет требуемых интерфейсов."
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr "предоставляет:"
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 msgid "layer:"
 msgstr "слой:"
@@ -760,8 +805,10 @@
 #: src/zope/app/apidoc/typemodule/type.py:103
 msgid ""
 "\n"
-"    Here you can see all registered interface types. When you open the subtree\n"
-"    of a specific interface type, you can see all the interfaces that provide\n"
+"    Here you can see all registered interface types. When you open the "
+"subtree\n"
+"    of a specific interface type, you can see all the interfaces that "
+"provide\n"
 "    this type. This can be very useful in cases where you want to determine\n"
 "    all content type interfaces, for example.\n"
 "    "
@@ -769,12 +816,12 @@
 "\n"
 "    В этом разделе показаны все зарегистрированные типы интерфейсов.\n"
 "    В дереве типов под каждым типом интерфейса расположены интерфейсы\n"
-"    предоставляющие этот тип. Это может быть полезно, например, в тех случаях когда\n"
+"    предоставляющие этот тип. Это может быть полезно, например, в тех "
+"случаях когда\n"
 "    необходимо определить все интерфейсы контента.\n"
 "    "
 
-#: src/zope/app/apidoc/utilities.py:117
-#: src/zope/app/apidoc/utilities.py:119
+#: src/zope/app/apidoc/utilities.py:117 src/zope/app/apidoc/utilities.py:119
 msgid "n/a"
 msgstr "Нет информации"
 
@@ -794,20 +841,29 @@
 #: src/zope/app/apidoc/utilitymodule/utilitymodule.py:90
 msgid ""
 "\n"
-"    Utilities are also nicely registered in a site manager, so that it is easy\n"
-"    to create a listing of available utilities. A utility is identified by the\n"
-"    providing interface and a name, which can be empty. The menu provides you\n"
+"    Utilities are also nicely registered in a site manager, so that it is "
+"easy\n"
+"    to create a listing of available utilities. A utility is identified by "
+"the\n"
+"    providing interface and a name, which can be empty. The menu provides "
+"you\n"
 "    with a list of interfaces that utilities provide and as sub-items the\n"
 "    names of the various implementations.\n"
 "\n"
-"    Again, the documentation of a utility lists all the attributes/fields and\n"
+"    Again, the documentation of a utility lists all the attributes/fields "
+"and\n"
 "    methods the utility provides and provides a link to the implementation.\n"
 "    "
 msgstr ""
 "\n"
-"    Утилиты также регистрируются в менеджере сайта, поэтому легко получить список доступных утилит. Утилита идентифицируется предоставляемым интерфейсом и именем, которое может быть пустым. Меню показывает список интерфейсов предоставляемых утилитами и в качестве дочерних элементов имена различных реализаций.\n"
+"    Утилиты также регистрируются в менеджере сайта, поэтому легко получить "
+"список доступных утилит. Утилита идентифицируется предоставляемым "
+"интерфейсом и именем, которое может быть пустым. Меню показывает список "
+"интерфейсов предоставляемых утилитами и в качестве дочерних элементов имена "
+"различных реализаций.\n"
 "\n"
-"    Документация по утилите описывает все атрибуты/поля и методы, предоставляемые утилитой, и также ссылку на реализацию."
+"    Документация по утилите описывает все атрибуты/поля и методы, "
+"предоставляемые утилитой, и также ссылку на реализацию."
 
 #: src/zope/app/apidoc/zcmlmodule/__init__.py:120
 msgid "ZCML Reference"
@@ -817,11 +873,14 @@
 msgid ""
 "\n"
 "    This module presents you with a complete list of ZCML directives and\n"
-"    serves therefore well as reference. The menu provides you with a tree that\n"
+"    serves therefore well as reference. The menu provides you with a tree "
+"that\n"
 "    organizes the directives by namespaces.\n"
 "\n"
-"    The documentation contents for each directive tells you all the available\n"
-"    attributes and their semantics. It also provides a link to the interface\n"
+"    The documentation contents for each directive tells you all the "
+"available\n"
+"    attributes and their semantics. It also provides a link to the "
+"interface\n"
 "    the directive confirms to. If available, it will even tell you the\n"
 "    file the directive was declared in. At the end a list of available\n"
 "    subdirectives is given, also listing the implemented interface and\n"
@@ -829,17 +888,27 @@
 "    "
 msgstr ""
 "\n"
-"    Данный модуль представляет полный список директив ZCML и может быть использован как справочный материал. В меню показано дерево организующее директивы по пространствам имен.\n"
+"    Данный модуль представляет полный список директив ZCML и может быть "
+"использован как справочный материал. В меню показано дерево организующее "
+"директивы по пространствам имен.\n"
 "\n"
-"    Для каждой директивы указаны все доступные атрибуты и их семантика. Также указана ссылка на интерфейс который данная директива поддерживает. Если доступна, будет указана информация о файле в котором определена директива. Ниже указан список доступных поддиректив также указывающий реализуемые интерфейсы и доступные атрибуты."
+"    Для каждой директивы указаны все доступные атрибуты и их семантика. "
+"Также указана ссылка на интерфейс который данная директива поддерживает. "
+"Если доступна, будет указана информация о файле в котором определена "
+"директива. Ниже указан список доступных поддиректив также указывающий "
+"реализуемые интерфейсы и доступные атрибуты."
 
 #: src/zope/app/apidoc/zcmlmodule/index.pt:22
 msgid "File:"
 msgstr "Файл:"
 
 #: src/zope/app/apidoc/zcmlmodule/index.pt:28
-msgid "from (line ${beginline}, column ${begincolumn}) to (line ${endline}, column ${endcolumn})"
-msgstr "от (строки ${beginline}, колонки ${begincolumn}) до (строки ${endline}, колонки ${endcolumn})"
+msgid ""
+"from (line ${beginline}, column ${begincolumn}) to (line ${endline}, column "
+"${endcolumn})"
+msgstr ""
+"от (строки ${beginline}, колонки ${begincolumn}) до (строки ${endline}, "
+"колонки ${endcolumn})"
 
 #: src/zope/app/apidoc/zcmlmodule/index.pt:33
 msgid "Info:"
@@ -865,7 +934,9 @@
 
 #: src/zope/app/apidoc/zcmlmodule/menu.pt:5
 msgid "Namespaces that are not full URLs start with \"http://namespaces.zope.org/\"."
-msgstr "Пространства имен не показанные как полные URL начинаются с \"http://namespaces.zope.org/\"."
+msgstr ""
+"Пространства имен не показанные как полные URL начинаются с \"http://"
+"namespaces.zope.org/\"."
 
 #: src/zope/app/applicationcontrol/browser/configure.zcml:25
 msgid "Runtime Information"
@@ -943,7 +1014,9 @@
 
 #: src/zope/app/applicationcontrol/browser/server-control.pt:15
 msgid "If you specify a time of 0 seconds, then the server will do a hard shutdown."
-msgstr "Если Вы укажете время остановки - 0 секунд, сервер будет остановлен незамедлительно."
+msgstr ""
+"Если Вы укажете время остановки - 0 секунд, сервер будет остановлен "
+"незамедлительно."
 
 #: src/zope/app/applicationcontrol/browser/server-control.pt:24
 msgid "Restart server"
@@ -969,23 +1042,25 @@
 msgid "Domain"
 msgstr "Домен"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr "Язык"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr "Файлы"
 
 # Default: "Reload"
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 msgid "reload-button"
 msgstr "Обновить"
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
-msgstr "Каталог сообщений успешно перезагружен"
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+msgid ""
+"Message Catalog for ${language} language in ${domain} domain successfully "
+"reloaded."
+msgstr "Каталог сообщений для языка ${language} в домене ${domain} успешно перезагружен"
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
 msgid "Name of database"
@@ -1031,82 +1106,84 @@
 
 #: src/zope/app/authentication/browser/configure.zcml:13
 msgid "Edit Pluggable Authentication Utility"
-msgstr ""
+msgstr "Настройки подключаемой утилиты идентификации"
 
 #: src/zope/app/authentication/browser/configure.zcml:21
 msgid "Plugins"
-msgstr ""
+msgstr "Модули"
 
 #: src/zope/app/authentication/browser/configure.zcml:37
 msgid "New Pluggable Authentication Utility Registration"
-msgstr ""
+msgstr "Новая регистрация подключаемой утилиты идентификации"
 
 #: src/zope/app/authentication/browser/configure.zcml:49
 msgid "New Credentials Plugin Registration"
-msgstr ""
+msgstr "Регистрация нового модуля удостоверений"
 
 #: src/zope/app/authentication/browser/configure.zcml:6
 msgid "New-style pluggable authentication utility"
-msgstr ""
+msgstr "Новая подключаемая утилита идентификации"
 
 #: src/zope/app/authentication/browser/configure.zcml:6
 msgid "Pluggable Authentication Utility"
-msgstr ""
+msgstr "Подключаемая утилита идентификации"
 
 #: src/zope/app/authentication/browser/configure.zcml:61
 msgid "New Authenticator Plugin Registration"
-msgstr ""
+msgstr "Регистрация нового модуля идентификации"
 
 #: src/zope/app/authentication/browser/configure.zcml:73
 msgid "Credentials Plugin"
-msgstr ""
+msgstr "Модуль удостоверений"
 
 #: src/zope/app/authentication/browser/configure.zcml:78
 msgid "Authenticator Plugin"
-msgstr ""
+msgstr "Модуль идентификации"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:15
 msgid "Add group information"
-msgstr ""
+msgstr "Добавить группу"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:24
 msgid "Group"
-msgstr ""
+msgstr "Группа"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:24
 msgid "A principals group"
-msgstr ""
+msgstr "Группа пользователей"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:32
 msgid "Groups Folder"
-msgstr ""
+msgstr "Папка групп"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:38
 msgid "Add group folder"
-msgstr ""
+msgstr "Добавить папку групп"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:47
 msgid "Group Folder"
-msgstr ""
+msgstr "Папка групп"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:47
 msgid "A Group folder"
-msgstr ""
+msgstr "Папка групп"
 
 #: src/zope/app/authentication/browser/groupfolder.zcml:7
 msgid "Change group information"
-msgstr ""
+msgstr "Изменить информацию о группе"
 
 #: src/zope/app/authentication/browser/httpplugins.zcml:13
 msgid "Realm"
-msgstr ""
+msgstr "Название области"
 
 #: src/zope/app/authentication/browser/httpplugins.zcml:7
 msgid "HTTP Basic-Auth Plugin"
-msgstr ""
+msgstr "Модуль простой HHTP идентификации"
 
 #: src/zope/app/authentication/browser/loginform.pt:11
-msgid "You are not authorized to perform this action. However, you may login as a different user who is authorized."
+msgid ""
+"You are not authorized to perform this action. However, you may login as a "
+"different user who is authorized."
 msgstr ""
 
 #: src/zope/app/authentication/browser/loginform.pt:20
@@ -1128,27 +1205,27 @@
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:14
 msgid "A Pluggable Authentication Persistent Authentication Plugin"
-msgstr ""
+msgstr "Сохраняемый модуль подключаемой идентификации"
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:22
 msgid "Add Principal Information"
-msgstr ""
+msgstr "Добавить пользователя"
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:32
 msgid "Principal Information"
-msgstr ""
+msgstr "Пользователь"
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:39
 msgid "Change Internal Principal"
-msgstr ""
+msgstr "Изменить информацию пользователя"
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:5
 msgid "Add Principal Folder"
-msgstr ""
+msgstr "Добавить папку пользователей"
 
 #: src/zope/app/authentication/browser/principalfolder.zcml:54
 msgid "Principal Folder Prefix"
-msgstr ""
+msgstr "Префикс пользователей в папке"
 
 # Default: "Pack"
 #: src/zope/app/authentication/browser/schemasearch.py:30
@@ -1170,7 +1247,7 @@
 
 #: src/zope/app/authentication/browser/session.zcml:5
 msgid "Session Credentials Plugin"
-msgstr ""
+msgstr "Модуль удостоверений сессии"
 
 #: src/zope/app/authentication/groupfolder.py:44
 #: src/zope/app/authentication/principalfolder.py:49
@@ -1178,10 +1255,8 @@
 #: src/zope/app/component/metadirectives.py:479
 #: src/zope/app/demo/pagelet/interfaces.py:38
 #: src/zope/app/demo/pageletchooser/interfaces.py:37
-#: src/zope/schema/interfaces.py:100
-#: src/zope/schema/interfaces.py:459
-#: src/zope/security/interfaces.py:264
-#: src/zope/security/interfaces.py:300
+#: src/zope/schema/interfaces.py:100 src/zope/schema/interfaces.py:459
+#: src/zope/security/interfaces.py:264 src/zope/security/interfaces.py:300
 #: src/zope/app/dublincore/browser/edit.pt:17
 #: src/zope/app/schema/browser/schema_edit.pt:39
 #: src/zope/app/container/browser/contents.pt:33
@@ -1200,8 +1275,7 @@
 #: src/zope/app/component/metadirectives.py:486
 #: src/zope/app/demo/pagelet/interfaces.py:44
 #: src/zope/app/demo/pageletchooser/interfaces.py:43
-#: src/zope/schema/interfaces.py:107
-#: src/zope/security/interfaces.py:270
+#: src/zope/schema/interfaces.py:107 src/zope/security/interfaces.py:270
 #: src/zope/security/interfaces.py:305
 #: src/zope/app/dublincore/browser/edit.pt:25
 msgid "Description"
@@ -1214,7 +1288,7 @@
 
 #: src/zope/app/authentication/groupfolder.py:54
 msgid "Principals"
-msgstr ""
+msgstr "Пользователи"
 
 #: src/zope/app/authentication/groupfolder.py:57
 msgid "List of ids of principals which belong to the group"
@@ -1223,7 +1297,7 @@
 #: src/zope/app/authentication/principalfolder.py:40
 #: src/zope/app/pluggableauth/interfaces.py:32
 msgid "Login"
-msgstr "Пользовательский идентификатор"
+msgstr "Идентификатор пользователя"
 
 #: src/zope/app/authentication/principalfolder.py:41
 msgid "The Login/Username of the principal. This value can change."
@@ -1252,11 +1326,15 @@
 #: src/zope/app/authentication/principalfolder.py:64
 #: src/zope/app/authentication/browser/principalfolder.zcml:54
 msgid "Prefix"
-msgstr ""
+msgstr "Префикс"
 
 #: src/zope/app/authentication/principalfolder.py:65
-msgid "Prefix to be added to all principal ids to assure that all ids are unique within the authentication service"
+msgid ""
+"Prefix to be added to all principal ids to assure that all ids are unique "
+"within the authentication service"
 msgstr ""
+"Префикс который будет добавлен всем идентификаторам пользователей чтобы быть "
+"уверенным, что все идентификаторы уникальны в пределах сервиса идентификации"
 
 #: src/zope/app/authentication/principalfolder.py:86
 msgid "Search String"
@@ -1314,8 +1392,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
+#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 #: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
-#: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
 msgid "save-changes-button"
 msgstr "Сохранить"
 
@@ -1325,21 +1403,21 @@
 msgstr "Сбросить кэшированные данные"
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
+#: src/zope/app/cache/browser/ramstats.pt:38
 #: src/zope/app/cache/browser/ramedit.pt:56
-#: src/zope/app/cache/browser/ramstats.pt:38
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -1454,45 +1532,45 @@
 msgstr "Добавить текстовый индекс"
 
 #: src/zope/app/catalog/browser/configure.zcml:82
-msgid "Index items based on multi-value fields with                  orderable values"
-msgstr "Индексированные значения базирующиеся на полях имеющих множество упорядоченных значений"
+msgid ""
+"Index items based on multi-value fields with                  orderable "
+"values"
+msgstr ""
+"Индексированные значения базирующиеся на полях имеющих множество "
+"упорядоченных значений"
 
 #: src/zope/app/catalog/browser/configure.zcml:82
 #: src/zope/app/catalog/browser/configure.zcml:91
 msgid "Text Index"
 msgstr "Индекс текстов"
 
-#: src/zope/app/catalog/interfaces.py:64
-#: src/zope/app/catalog/text.py:33
+#: src/zope/app/catalog/interfaces.py:64 src/zope/app/catalog/text.py:33
 #: src/zope/app/component/metadirectives.py:155
 #: src/zope/app/component/metadirectives.py:461
 msgid "Interface"
 msgstr "Интерфейс"
 
-#: src/zope/app/catalog/interfaces.py:65
-#: src/zope/app/catalog/text.py:34
+#: src/zope/app/catalog/interfaces.py:65 src/zope/app/catalog/text.py:34
 msgid "Objects will be adapted to this interface"
 msgstr "Объекты будут адаптированы к этому интерфейсу"
 
-#: src/zope/app/catalog/interfaces.py:71
-#: src/zope/app/catalog/text.py:41
+#: src/zope/app/catalog/interfaces.py:71 src/zope/app/catalog/text.py:41
 msgid "Field Name"
 msgstr "Название поля"
 
-#: src/zope/app/catalog/interfaces.py:72
-#: src/zope/app/catalog/text.py:42
+#: src/zope/app/catalog/interfaces.py:72 src/zope/app/catalog/text.py:42
 msgid "Name of the field to index"
 msgstr "Название поля для индексирования"
 
-#: src/zope/app/catalog/interfaces.py:76
-#: src/zope/app/catalog/text.py:47
+#: src/zope/app/catalog/interfaces.py:76 src/zope/app/catalog/text.py:47
 msgid "Field Callable"
 msgstr "Вызываемое поле"
 
-#: src/zope/app/catalog/interfaces.py:77
-#: src/zope/app/catalog/text.py:48
+#: src/zope/app/catalog/interfaces.py:77 src/zope/app/catalog/text.py:48
 msgid "If true, then the field should be called to get the value to be indexed"
-msgstr "Если установлено, то поле должно быть вызвано для получения значения для индекирования"
+msgstr ""
+"Если установлено, то поле должно быть вызвано для получения значения для "
+"индекирования"
 
 #: src/zope/app/component/browser/__init__.py:104
 #: src/zope/app/schema/browser/schema_add.pt:9
@@ -1533,7 +1611,7 @@
 
 #: src/zope/app/component/browser/configure.zcml:240
 msgid "Edit Utility Registration"
-msgstr "Редактирование регистрации утилиты"
+msgstr "Настройки регистрации утилиты"
 
 #: src/zope/app/component/browser/configure.zcml:278
 msgid "Change adapter"
@@ -1604,8 +1682,12 @@
 msgstr "Данный объект не активирован."
 
 #: src/zope/app/component/browser/registration.pt:45
-msgid "This object won't actually be used unless it is registered to perform a specific function and is activated."
-msgstr "Данный объект не будет использоваться до тех пор пока не будет зарегистрирован для предоставления указанной функциональности и активирован."
+msgid ""
+"This object won't actually be used unless it is registered to perform a "
+"specific function and is activated."
+msgstr ""
+"Данный объект не будет использоваться до тех пор пока не будет "
+"зарегистрирован для предоставления указанной функциональности и активирован."
 
 # Default: "Register"
 #: src/zope/app/component/browser/registration.pt:50
@@ -1670,7 +1752,9 @@
 
 #: src/zope/app/component/browser/site_management.pt:20
 msgid "Unique utilities can only exist once per site manager and have no name."
-msgstr "Уникальные утилиты не имеют имени и могут существовать только в единственном экземпляре для каждого менеджера сайта."
+msgstr ""
+"Уникальные утилиты не имеют имени и могут существовать только в единственном "
+"экземпляре для каждого менеджера сайта."
 
 # Default: "Install"
 #: src/zope/app/component/browser/site_management.pt:40
@@ -1769,11 +1853,11 @@
 #: src/zope/app/component/browser/editregistration.pt:4
 #: src/zope/app/component/browser/editregistration.pt:11
 msgid "Registration Manager"
-msgstr "Менеджер регистрации"
+msgstr "Менеджер регистраций"
 
 #: src/zope/app/component/interfaces/registration.py:215
 msgid "The registration manager keeps track of all component registrations."
-msgstr "Менеджер регистрации хранит регистрацию для всех компонентов."
+msgstr "Менеджер регистраций хранит регистрации для всех компонентов."
 
 #: src/zope/app/component/interfaces/registration.py:32
 msgid "Inactive"
@@ -1938,7 +2022,9 @@
 msgstr "Интерфейс предоставляемый утилитой."
 
 #: src/zope/app/component/metadirectives.py:287
-msgid "Name of the registration.  This is used by application code when locating a utility."
+msgid ""
+"Name of the registration.  This is used by application code when locating a "
+"utility."
 msgstr ""
 
 #: src/zope/app/component/metadirectives.py:296
@@ -1969,7 +2055,8 @@
 "\n"
 "        Specifies the interface for which the default view is declared. All\n"
 "        objects implementing this interface make use of this default\n"
-"        setting. If this attribute is not specified, the default is available\n"
+"        setting. If this attribute is not specified, the default is "
+"available\n"
 "        for all objects."
 msgstr ""
 
@@ -1990,7 +2077,10 @@
 msgstr "Компонент для использования"
 
 #: src/zope/app/component/metadirectives.py:40
-msgid "Python name of the implementation object.  This must identify an object in a module using the full dotted name.  If specified, the ``factory`` field must be left blank."
+msgid ""
+"Python name of the implementation object.  This must identify an object in a "
+"module using the full dotted name.  If specified, the ``factory`` field must "
+"be left blank."
 msgstr ""
 
 #: src/zope/app/component/metadirectives.py:400
@@ -2035,7 +2125,8 @@
 #: src/zope/app/component/metadirectives.py:440
 msgid ""
 "\n"
-"        This argument says that this content class should be configured in the\n"
+"        This argument says that this content class should be configured in "
+"the\n"
 "        same way the specified class' security is. If this argument is\n"
 "        specifed, no other argument can be used."
 msgstr ""
@@ -2080,7 +2171,10 @@
 msgstr "Фабрика"
 
 #: src/zope/app/component/metadirectives.py:55
-msgid "Python name of a factory which can create the implementation object.  This must identify an object in a module using the full dotted name. If specified, the ``component`` field must be left blank."
+msgid ""
+"Python name of a factory which can create the implementation object.  This "
+"must identify an object in a module using the full dotted name. If "
+"specified, the ``component`` field must be left blank."
 msgstr ""
 
 #: src/zope/app/component/metadirectives.py:67
@@ -2120,7 +2214,9 @@
 "        attribute is not supplied, it defaults to 'default'."
 msgstr ""
 "\n"
-"Оформление состоит из слоев. Обычно конкретные представления располагаются в слое названном как представления. Если атрибут 'layer' (слой) не указан, по умолчанию используется 'default'. "
+"Оформление состоит из слоев. Обычно конкретные представления располагаются в "
+"слое названном как представления. Если атрибут 'layer' (слой) не указан, по "
+"умолчанию используется 'default'. "
 
 #: src/zope/app/component/metadirectives.py:98
 #: src/zope/app/component/metadirectives.py:361
@@ -2212,7 +2308,10 @@
 "A skin is composed of layers. It is common to put\n"
 "        skin specific views in a layer named after the skin. If the 'layer'\n"
 "        attribute is not supplied, it defaults to 'default'."
-msgstr "Оформление состоит из слоев. Обычно конкретные представления располагаются в слое названном как представление. Если атрибут 'layer' (слой) не указан, по умолчанию используется 'default'. "
+msgstr ""
+"Оформление состоит из слоев. Обычно конкретные представления располагаются в "
+"слое названном как представление. Если атрибут 'layer' (слой) не указан, по "
+"умолчанию используется 'default'. "
 
 #: src/zope/app/container/browser/metaconfigure.py:76
 #: src/zope/app/component/browser/configure.zcml:113
@@ -2422,7 +2521,9 @@
 msgstr "Установки ZMI"
 
 #: src/zope/app/demo/skinpref/configure.zcml:15
-msgid "         In this category you will find all preferences related to the Zope         Management Interface (ZMI).         "
+msgid ""
+"         In this category you will find all preferences related to the "
+"Zope         Management Interface (ZMI).         "
 msgstr ""
 
 #: src/zope/app/demo/skinpref/configure.zcml:25
@@ -2437,8 +2538,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101
-#: src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr "Просмотр"
 
@@ -2480,28 +2579,26 @@
 
 #: src/zope/app/demo/widget/browser/popup.pt:36
 #: src/zope/app/schema/browser/schema_edit.pt:21
-#: src/zope/app/form/browser/add.pt:23
-#: src/zope/app/form/browser/edit.pt:24
+#: src/zope/app/form/browser/add.pt:23 src/zope/app/form/browser/edit.pt:24
 msgid "There are ${num_errors} input errors."
 msgstr "Ошибок при вводе: ${num_errors}"
 
 # Default: "Refresh"
 #: src/zope/app/demo/widget/browser/popup.pt:65
+#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/file/browser/file_add.pt:45
-#: src/zope/app/file/browser/file_upload.pt:50
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
 #: src/zope/app/component/browser/editregistration.pt:48
-#: src/zope/app/form/browser/add.pt:51
-#: src/zope/app/form/browser/edit.pt:51
+#: src/zope/app/form/browser/add.pt:51 src/zope/app/form/browser/edit.pt:51
 msgid "refresh-button"
 msgstr "Обновить"
 
 # Default: "Submit"
 #: src/zope/app/demo/widget/browser/popup.pt:67
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 msgid "submit-button"
 msgstr "Изменить"
 
@@ -2791,8 +2888,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
+#: src/zope/app/cache/browser/ramstats.pt:11
 #: src/zope/app/cache/browser/ramedit.pt:10
-#: src/zope/app/cache/browser/ramstats.pt:11
 msgid "Errors"
 msgstr "Ошибки"
 
@@ -2807,7 +2904,7 @@
 
 #: src/zope/app/error/browser/configure.zcml:35
 msgid "Error Logging Utility"
-msgstr ""
+msgstr "Утилита журналирования ошибок"
 
 #: src/zope/app/error/browser/configure.zcml:41
 msgid "Component to record all uncaught errors and exceptions."
@@ -2825,6 +2922,12 @@
 msgid "No exceptions logged."
 msgstr "Нет сообщений об ошибках"
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr "Время"
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -2860,8 +2963,12 @@
 msgstr "Настроить журнал ошибок"
 
 #: src/zope/app/error/browser/error_config.pt:9
-msgid "You can configure how many exceptions should be kept and whether the exceptions should be copied to Zope's event log file(s)."
-msgstr "Вы можете настроить количество ошибок сохраняемых в журнале и должны ли ошибки сохраняться в лог-файл(ы) Zope."
+msgid ""
+"You can configure how many exceptions should be kept and whether the "
+"exceptions should be copied to Zope's event log file(s)."
+msgstr ""
+"Вы можете настроить количество ошибок сохраняемых в журнале и должны ли "
+"ошибки сохраняться в лог-файл(ы) Zope."
 
 #: src/zope/app/error/browser/errorentry.pt:10
 msgid "Header"
@@ -2960,8 +3067,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
+#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/container/browser/add.pt:39
-#: src/zope/app/container/browser/contents.pt:149
 #: src/zope/app/form/browser/add.pt:53
 msgid "add-button"
 msgstr "Добавить"
@@ -3025,28 +3132,27 @@
 msgid " ${width}x${height}"
 msgstr " ${width}x${height}"
 
-#: src/zope/app/file/interfaces.py:27
-#: src/zope/app/pythonpage/__init__.py:44
+#: src/zope/app/file/interfaces.py:27 src/zope/app/pythonpage/__init__.py:44
+#: src/zope/app/file/browser/file_upload.pt:15
 #: src/zope/app/file/browser/file_add.pt:15
-#: src/zope/app/file/browser/file_upload.pt:15
 msgid "Content Type"
 msgstr "Тип данных"
 
 #: src/zope/app/file/interfaces.py:28
+#: src/zope/app/file/browser/file_upload.pt:15
 #: src/zope/app/file/browser/file_add.pt:15
-#: src/zope/app/file/browser/file_upload.pt:15
 msgid "The content type identifies the type of data."
 msgstr "Определяет тип данных."
 
 #: src/zope/app/file/interfaces.py:35
+#: src/zope/app/file/browser/file_upload.pt:35
 #: src/zope/app/file/browser/file_add.pt:30
-#: src/zope/app/file/browser/file_upload.pt:35
 msgid "Data"
 msgstr "Данные"
 
 #: src/zope/app/file/interfaces.py:36
+#: src/zope/app/file/browser/file_upload.pt:35
 #: src/zope/app/file/browser/file_add.pt:30
-#: src/zope/app/file/browser/file_upload.pt:35
 msgid "The actual content of the object."
 msgstr "Данные объекта."
 
@@ -3078,18 +3184,6 @@
 msgid "An error occured."
 msgstr "Ошибка"
 
-# Default: "Previous"
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-msgid "previous-button"
-msgstr "Предыдущий"
-
-# Default: "Next"
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-msgid "next-button"
-msgstr "Следующий"
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr "Правда"
@@ -3130,6 +3224,18 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+# Default: "Previous"
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+msgid "previous-button"
+msgstr "Предыдущий"
+
+# Default: "Next"
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+msgid "next-button"
+msgstr "Следующий"
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr "Нет изменений для сохранения"
@@ -3165,26 +3271,26 @@
 msgstr "Добавить %s"
 
 # Default: "Selected"
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 msgid "SourceDisplayWidget-label"
 msgstr "Выбранные"
 
 # Default: "Remove"
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 msgid "MultipleSourceInputWidget-remove"
 msgstr "Удалить"
 
 # Default: "Nothing"
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 msgid "SourceDisplayWidget-missing"
-msgstr ""
+msgstr "Отсутствуют"
 
 # Default: "Invalid value"
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 msgid "SourceDisplayWidget-invalid"
 msgstr "Ошибочное значение"
 
@@ -3278,32 +3384,34 @@
 
 #: src/zope/app/homefolder/configure.zcml:32
 msgid "Add Home Folder Manager"
-msgstr ""
+msgstr "Добавить менеджер домашних папок"
 
 #: src/zope/app/homefolder/configure.zcml:45
 #: src/zope/app/homefolder/configure.zcml:74
 msgid "Home Folder Manager"
-msgstr ""
+msgstr "Менеджер домашних папок"
 
 #: src/zope/app/homefolder/configure.zcml:52
 msgid "Edit Home Folder Manager"
-msgstr ""
+msgstr "Настройки менеджера домашних папок"
 
 #: src/zope/app/homefolder/configure.zcml:65
 msgid "Assignments"
-msgstr ""
+msgstr "Связывание"
 
 #: src/zope/app/homefolder/configure.zcml:74
 msgid "A Principal Home Folder Manager"
-msgstr ""
+msgstr "Менеджер домашней папки пользователя"
 
 #: src/zope/app/homefolder/interfaces.py:28
 msgid "Home Folder"
-msgstr ""
+msgstr "Домашняя папка"
 
 #: src/zope/app/homefolder/interfaces.py:29
-msgid "The principal's home folder; if none has been defined, this attribute will be `None`."
-msgstr ""
+msgid ""
+"The principal's home folder; if none has been defined, this attribute will "
+"be `None`."
+msgstr "Домашняя папка пользователя. Если не определена данный атрибут будет `None`."
 
 #: src/zope/app/homefolder/interfaces.py:41
 msgid "Base Folder"
@@ -3311,23 +3419,37 @@
 
 #: src/zope/app/homefolder/interfaces.py:42
 msgid "The Base Folder for the Principal Home Folder."
-msgstr ""
+msgstr "Базовая папка для домашней папки пользователя."
 
 #: src/zope/app/homefolder/interfaces.py:46
 msgid "Create Home Folder"
-msgstr ""
+msgstr "Создать домашнюю папку"
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
-msgstr ""
+msgid "Whether home folders should be created upon adding a assignment, if missing."
+msgstr "Должна ли домашняя папка быть создана в процессе связывания если отсутствует."
 
 #: src/zope/app/homefolder/interfaces.py:52
+msgid "Auto create assignment"
+msgstr "Автоматическое связывание"
+
+#: src/zope/app/homefolder/interfaces.py:53
+msgid ""
+"Whether assignment and folder should be created when calling getHomeFolder, "
+"if not existing."
+msgstr "Должна ли домашняя папка быть создана и связана при вызове getHomeFolder если отсутствует."
+
+#: src/zope/app/homefolder/interfaces.py:59
 msgid "Local Home Folder Role"
-msgstr ""
+msgstr "Роль для домашней папки"
 
-#: src/zope/app/homefolder/interfaces.py:53
-msgid "The local role that the user will have in its home folder. This role is only set on folders that are created by the manager."
+#: src/zope/app/homefolder/interfaces.py:60
+msgid ""
+"The local role that the user will have in its home folder. This role is only "
+"set on folders that are created by the manager."
 msgstr ""
+"Локальная роль которая будет у пользователя в этой папке. Данная роль "
+"устанавливается только для папок созданных данным менеджером."
 
 #: src/zope/app/i18n/browser/configure.zcml:17
 msgid "Translate"
@@ -3343,8 +3465,12 @@
 msgstr "Синхронизировать"
 
 #: src/zope/app/i18n/browser/configure.zcml:5
-msgid "Translation Domains allow you to localize your software by       providing message translations."
-msgstr "Домены переводов позволят Вам локализовать Ваше программное обеспечение предоставляя переводы сообщений."
+msgid ""
+"Translation Domains allow you to localize your software by       providing "
+"message translations."
+msgstr ""
+"Домены переводов позволят Вам локализовать Ваше программное обеспечение "
+"предоставляя переводы сообщений."
 
 #: src/zope/app/i18n/browser/configure.zcml:5
 #: src/zope/app/applicationcontrol/browser/configure.zcml:43
@@ -3368,22 +3494,10 @@
 msgid "Here you can export and import messages from your Translation Domain."
 msgstr "Здесь Вы можете загружать и сохранять переводы для Вашего домена переводов."
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr "Выберите языки:"
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr "Имя файла для загрузки:"
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr "Домен переводов - Перевести"
-
 # Default: "Export"
 #: src/zope/app/i18n/browser/exportimport.pt:40
 msgid "export-button"
@@ -3399,7 +3513,7 @@
 
 #: src/zope/app/i18n/browser/synchronize.pt:4
 msgid "Translation Domain - Synchronize"
-msgstr ""
+msgstr "Домен переводов - Синхронизация"
 
 # Default: "Save Settings"
 #: src/zope/app/i18n/browser/synchronize.pt:66
@@ -3411,11 +3525,10 @@
 msgid "synchronize-button"
 msgstr "Синхронизировать"
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
-msgstr "Идентификатор сообщения"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
+msgstr "Статус"
 
 #: src/zope/app/i18n/browser/synchronize.py:34
 msgid "Up to Date"
@@ -3449,11 +3562,23 @@
 msgid "Delete Messages"
 msgstr "Удалить сообщения"
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr "Выберите языки:"
+
 # Default: "Edit"
 #: src/zope/app/i18n/browser/translate.pt:35
 msgid "edit-button"
 msgstr "Редактировать"
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr "Домен переводов - Перевести"
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr "Новый язык:"
@@ -3467,6 +3592,12 @@
 msgid "filter-button"
 msgstr "Фильтр"
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr "Идентификатор сообщения"
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr "Редактировать сообщение"
@@ -3486,11 +3617,15 @@
 
 #: src/zope/app/i18nfile/browser/i18nfile.py:47
 msgid "This edit form allows you to make changes to the properties of this file."
-msgstr "Данная форма редактирования позволяет сделать изменения в свойствах данного файла."
+msgstr ""
+"Данная форма редактирования позволяет сделать изменения в свойствах данного "
+"файла."
 
 #: src/zope/app/i18nfile/browser/i18nimage.py:32
 msgid "This edit form allows you to make changes to the properties of this image."
-msgstr "Данная форма редактирования позволяет сделать изменения в свойствах данного изображения."
+msgstr ""
+"Данная форма редактирования позволяет сделать изменения в свойствах данного "
+"изображения."
 
 #: src/zope/app/i18nfile/configure.zcml:22
 msgid "An Internationalized File"
@@ -3527,12 +3662,18 @@
 msgstr "Генератор уникальных идентификаторов"
 
 #: src/zope/app/intid/browser/configure.zcml:5
-msgid "Unique Ids Tools are used to provide system-wide unique ids       for documents."
-msgstr ""
+msgid ""
+"Unique Ids Tools are used to provide system-wide unique ids       for "
+"documents."
+msgstr "Инструментарий генерации уникальных идентификаторов используется для генерации уникальных в системе идентификаторов для документов."
 
 #: src/zope/app/introspector/configure.zcml:6
-msgid "       Use the object-introspection facility to discover       and browse interfaces and classes.       "
-msgstr "Использование возможности просмотра информации о классах и интерфейсах объектов."
+msgid ""
+"       Use the object-introspection facility to discover       and browse "
+"interfaces and classes.       "
+msgstr ""
+"Использование возможности просмотра информации о классах и интерфейсах "
+"объектов."
 
 # Default: "Introspect Object Classes and Interfaces"
 #: src/zope/app/introspector/configure.zcml:6
@@ -3541,36 +3682,35 @@
 
 #: src/zope/app/locking/adapter.py:69
 msgid "Multiple principals found"
-msgstr ""
+msgstr "Найдено больше одного пользователя"
 
 #: src/zope/app/locking/adapter.py:71
 msgid "No principal found"
-msgstr ""
+msgstr "Пользователей не найдено"
 
 #: src/zope/app/locking/adapter.py:80
 msgid "Object is already locked"
-msgstr ""
+msgstr "Объект уже заблокирован"
 
-#: src/zope/app/locking/adapter.py:89
-#: src/zope/app/locking/adapter.py:99
+#: src/zope/app/locking/adapter.py:89 src/zope/app/locking/adapter.py:99
 msgid "Object is not locked"
-msgstr ""
+msgstr "Объект не заблокирован"
 
 #: src/zope/app/locking/adapter.py:92
 msgid "Principal is not lock owner"
-msgstr ""
+msgstr "Пользователь не является владельцем блокировки"
 
 #: src/zope/app/locking/interfaces.py:110
 msgid "id of the principal owning the lock"
-msgstr ""
+msgstr "Идентификатор пользователя владеющего блокировкой"
 
 #: src/zope/app/locking/interfaces.py:114
 msgid "time value indicating the creation time"
-msgstr ""
+msgstr "Время создания"
 
 #: src/zope/app/locking/interfaces.py:119
 msgid "time value indicating the lock timeout from creation"
-msgstr ""
+msgstr "Задержка блокировки с момента ее создания"
 
 # Default: "Send out mail with arbitrary from and to addresses"
 #: src/zope/app/mail/configure.zcml:7
@@ -3581,8 +3721,7 @@
 msgid "Queue path"
 msgstr "Путь к очереди"
 
-#: src/zope/app/mail/interfaces.py:109
-#: src/zope/app/mail/interfaces.py:118
+#: src/zope/app/mail/interfaces.py:109 src/zope/app/mail/interfaces.py:118
 msgid "Pathname of the directory used to queue mail."
 msgstr "Путь к директорию используемому для почтовой очереди."
 
@@ -3680,11 +3819,11 @@
 
 #: src/zope/app/onlinehelp/help/configure.zcml:14
 msgid "Zope Developer Info"
-msgstr ""
+msgstr "Информация для Zope разработчика"
 
 #: src/zope/app/onlinehelp/help/configure.zcml:21
 msgid "Online Help"
-msgstr ""
+msgstr "Система справки"
 
 #: src/zope/app/onlinehelp/help/configure.zcml:28
 msgid "User interface ZMI"
@@ -3719,12 +3858,15 @@
 msgstr "Путь к ресурсу"
 
 #: src/zope/app/onlinehelp/interfaces.py:170
-msgid "The Path to the Resource, assumed to be in the same directory as the Help Topic"
-msgstr "Путь к ресурсу, предполагается что он должен быть в том-же директории что и тема справки"
+msgid ""
+"The Path to the Resource, assumed to be in the same directory as the Help "
+"Topic"
+msgstr ""
+"Путь к ресурсу, предполагается что он должен быть в том-же директории что и "
+"тема справки"
 
 #: src/zope/app/onlinehelp/interfaces.py:53
-#: src/zope/security/interfaces.py:258
-#: src/zope/security/interfaces.py:294
+#: src/zope/security/interfaces.py:258 src/zope/security/interfaces.py:294
 msgid "Id"
 msgstr "Идентификатор"
 
@@ -3812,8 +3954,14 @@
 msgstr ""
 
 #: src/zope/app/pagetemplate/engine.py:122
-msgid "Inline Code Evaluation is deactivated, which means that you cannot have inline code snippets in your Page Template. Activate Inline Code Evaluation and try again."
-msgstr "Выполнение встроенного кода было деактивировано, соответственно Вы не можете использовать встроенный в Ваших шаблонах. Активируйте выполнение встроенного кода и повторите попытку."
+msgid ""
+"Inline Code Evaluation is deactivated, which means that you cannot have "
+"inline code snippets in your Page Template. Activate Inline Code Evaluation "
+"and try again."
+msgstr ""
+"Выполнение встроенного кода было деактивировано, соответственно Вы не можете "
+"использовать встроенный в Ваших шаблонах. Активируйте выполнение встроенного "
+"кода и повторите попытку."
 
 #: src/zope/app/pagetemplate/engine.py:131
 msgid "No interpreter named \"${lang_name}\" was found."
@@ -3865,11 +4013,8 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:29
 #: src/zope/app/demo/widget/browser/textwidget.zcml:29
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:29
-#: src/zope/app/session/browser.zcml:15
-#: src/zope/app/session/browser.zcml:38
+#: src/zope/app/session/browser.zcml:15 src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76
-#: src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr "Редактировать"
@@ -3892,16 +4037,21 @@
 
 #: src/zope/app/preference/configure.zcml:70
 msgid "A Default User Preferences Provider"
-msgstr ""
+msgstr "Менеджер умолчаний для пользовательских настроек"
 
 #: src/zope/app/preference/configure.zcml:70
 #: src/zope/app/preference/configure.zcml:77
 msgid "Default User Preferences Provider"
-msgstr ""
+msgstr "Менеджер умолчаний для пользовательских настроек"
 
 #: src/zope/app/preference/configure.zcml:77
-msgid "           This component lets you define the local default user           preferences. The values of this provider are used, if the           user has not made a selection yet."
+msgid ""
+"           This component lets you define the local default user           "
+"preferences. The values of this provider are used, if the           user has "
+"not made a selection yet."
 msgstr ""
+"Данный компонент позволяет определить умолчания для пользовательских "
+"настроек. Значения используются если пользователь еще не выбрал значений."
 
 #: src/zope/app/preference/menu.pt:5
 msgid "Preferences"
@@ -3999,7 +4149,7 @@
 
 #: src/zope/app/principalannotation/configure.zcml:18
 msgid "Principal Annotation Utility"
-msgstr ""
+msgstr "Утилита аннотаций пользователя"
 
 #: src/zope/app/principalannotation/configure.zcml:24
 msgid "Stores annotations for any principal."
@@ -4007,14 +4157,16 @@
 
 #: src/zope/app/principalannotation/configure.zcml:24
 msgid "Principal Annotations"
-msgstr ""
+msgstr "Аннотации пользователя"
 
 #: src/zope/app/publisher/interfaces/browser.py:106
 msgid "Menu item ordering hint"
 msgstr ""
 
 #: src/zope/app/publisher/interfaces/browser.py:107
-msgid "This attribute provides a hint for menu item ordering.Menu items will generally be sorted by the `for_`attribute and then by the order."
+msgid ""
+"This attribute provides a hint for menu item ordering.Menu items will "
+"generally be sorted by the `for_`attribute and then by the order."
 msgstr ""
 
 #: src/zope/app/publisher/interfaces/browser.py:113
@@ -4023,7 +4175,8 @@
 
 #: src/zope/app/publisher/interfaces/browser.py:114
 msgid ""
-"The condition is given as a TALES expression. The expression has access to the variables:\n"
+"The condition is given as a TALES expression. The expression has access to "
+"the variables:\n"
 "\n"
 "context -- The object the menu is being displayed for\n"
 "\n"
@@ -4034,7 +4187,8 @@
 "The menu item will not be displayed if there is a \n"
 "filter and the filter evaluates to a false value."
 msgstr ""
-"Условие заданное как выражение TALES. Выражение будет иметь доступ к следующим переменным:\n"
+"Условие заданное как выражение TALES. Выражение будет иметь доступ к "
+"следующим переменным:\n"
 "\n"
 "context -- Объект для которого будет показано меню\n"
 "\n"
@@ -4042,7 +4196,8 @@
 "\n"
 "nothing -- None\n"
 "\n"
-"Пункт меню не будет показан если условие задано и при выполнении возвращает False."
+"Пункт меню не будет показан если условие задано и при выполнении возвращает "
+"False."
 
 #: src/zope/app/publisher/interfaces/browser.py:129
 msgid "Icon URI"
@@ -4082,7 +4237,9 @@
 msgstr "Описание меню"
 
 #: src/zope/app/publisher/interfaces/browser.py:64
-msgid "A description of the menu. This might be shown on menu pages or in pop-up help for menus."
+msgid ""
+"A description of the menu. This might be shown on menu pages or in pop-up "
+"help for menus."
 msgstr ""
 
 #: src/zope/app/publisher/interfaces/browser.py:84
@@ -4098,7 +4255,9 @@
 msgstr ""
 
 #: src/zope/app/publisher/interfaces/browser.py:91
-msgid "A description of the menu item. This might be shown on menu pages or in pop-up help for menu items."
+msgid ""
+"A description of the menu item. This might be shown on menu pages or in pop-"
+"up help for menu items."
 msgstr ""
 
 #: src/zope/app/publisher/interfaces/browser.py:97
@@ -4108,7 +4267,10 @@
 
 #: src/zope/app/publisher/interfaces/browser.py:98
 #: src/zope/app/publisher/interfaces/browser.py:150
-msgid "When a user selects a browser menu item, the URLgiven in the action is displayed. The action is usually given as a relative URL, relative to the object the menu item is for."
+msgid ""
+"When a user selects a browser menu item, the URLgiven in the action is "
+"displayed. The action is usually given as a relative URL, relative to the "
+"object the menu item is for."
 msgstr ""
 
 #: src/zope/app/pythonpage/__init__.py:40
@@ -4190,7 +4352,7 @@
 
 #: src/zope/app/rdb/browser/rdbconnection.pt:4
 msgid "Edit Relational Database Adapter"
-msgstr "Редактировать адаптер реляционной базы данных"
+msgstr "Настройки адаптера реляционной базы данных"
 
 #: src/zope/app/rdb/browser/rdbtestresults.pt:12
 msgid "Executed Query:"
@@ -4225,7 +4387,7 @@
 
 #: src/zope/app/rdb/interfaces.py:376
 msgid "DSN"
-msgstr "Имя источника данных"
+msgstr "Источник данных"
 
 #: src/zope/app/rdb/interfaces.py:377
 msgid ""
@@ -4259,7 +4421,8 @@
 msgid ""
 "A list of regular expressions.\n"
 "\n"
-"                     Requests whose paths match any of the expressions listed\n"
+"                     Requests whose paths match any of the expressions "
+"listed\n"
 "                     here will not be shown."
 msgstr ""
 "Список регулярных выражений.\n"
@@ -4273,22 +4436,11 @@
 msgid "Recorded Sessions"
 msgstr "Записанные сессии"
 
-#: src/zope/app/recorder/sessions.pt:15
-#: src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr "Время"
-
 # Default: "Methods"
 #: src/zope/app/recorder/sessions.pt:16
 msgid "Method"
 msgstr "Метод"
 
-#: src/zope/app/recorder/sessions.pt:18
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr "Статус"
-
 #: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr "Создать функциональный тест"
@@ -4487,8 +4639,7 @@
 msgid "BytesLine Field"
 msgstr "Поле для байтовой строки"
 
-#: src/zope/app/schema/fields.zcml:114
-#: src/zope/app/schema/fieldforms.zcml:7
+#: src/zope/app/schema/fields.zcml:114 src/zope/app/schema/fieldforms.zcml:7
 msgid "Text Field"
 msgstr "Поле для текста"
 
@@ -4496,18 +4647,15 @@
 msgid "Text Line Field"
 msgstr "Поле для текстовой строки"
 
-#: src/zope/app/schema/fields.zcml:140
-#: src/zope/app/schema/fieldforms.zcml:59
+#: src/zope/app/schema/fields.zcml:140 src/zope/app/schema/fieldforms.zcml:59
 msgid "Boolean Field"
 msgstr "Поле для булевского значения"
 
-#: src/zope/app/schema/fields.zcml:151
-#: src/zope/app/schema/fieldforms.zcml:85
+#: src/zope/app/schema/fields.zcml:151 src/zope/app/schema/fieldforms.zcml:85
 msgid "Integer Field"
 msgstr "Поле для целого числа"
 
-#: src/zope/app/schema/fields.zcml:163
-#: src/zope/app/schema/fieldforms.zcml:111
+#: src/zope/app/schema/fields.zcml:163 src/zope/app/schema/fieldforms.zcml:111
 msgid "Float Field"
 msgstr "Поле для вещественного числа"
 
@@ -4531,8 +4679,7 @@
 msgid "Dict Field"
 msgstr "Поле для словаря"
 
-#: src/zope/app/schema/fields.zcml:232
-#: src/zope/app/schema/fieldforms.zcml:137
+#: src/zope/app/schema/fields.zcml:232 src/zope/app/schema/fieldforms.zcml:137
 msgid "Datetime Field"
 msgstr "Поле для даты и времени"
 
@@ -4585,8 +4732,12 @@
 msgstr "Определить права доступа"
 
 #: src/zope/app/schemacontent/browser/configure.zcml:5
-msgid "Content Component Definitions are used to declare       schema-based content objects."
-msgstr "Определения компонента контента используются для определения объектов контента основанных на схеме."
+msgid ""
+"Content Component Definitions are used to declare       schema-based content "
+"objects."
+msgstr ""
+"Определения компонента контента используются для определения объектов "
+"контента основанных на схеме."
 
 #: src/zope/app/schemacontent/browser/configure.zcml:64
 msgid "New Content Component Instance"
@@ -4629,7 +4780,11 @@
 msgstr "Создать меню"
 
 #: src/zope/app/schemacontent/interfaces.py:52
-msgid "If set to True, the system will create a local Browserlocal browser menu item for you. If this option is set to False, the system will try to find the next site manager that has a menu with the specifed id. If no menu was found or the menu is a global menu, then an error is created."
+msgid ""
+"If set to True, the system will create a local Browserlocal browser menu "
+"item for you. If this option is set to False, the system will try to find "
+"the next site manager that has a menu with the specifed id. If no menu was "
+"found or the menu is a global menu, then an error is created."
 msgstr ""
 
 #: src/zope/app/schemacontent/interfaces.py:73
@@ -4658,8 +4813,19 @@
 msgstr "Копировать схему"
 
 #: src/zope/app/schemacontent/interfaces.py:85
-msgid "If this field is set to True, a copied version of the schema will be used in the Content Component instance. This has the advantage that an existing Content Component's schema is set in stone and can never change, even when a mutable schema evolves. If the value is False, then the Content Component's can change (which is desirable in some cases - i.e. during development.)"
-msgstr "Если данное поле установлено в True, копия данной схемы будет использована в экземпляре компонента контента. Преимущество данного подхода в том, что используемая схема компонента контента не сможет быть изменена, даже когда используется изменяемая схема. Если поле установлено в False, тогда компоненты контента могут изменяться. (что может быть желательно в определенных случаях, например в процессе разработки)"
+msgid ""
+"If this field is set to True, a copied version of the schema will be used in "
+"the Content Component instance. This has the advantage that an existing "
+"Content Component's schema is set in stone and can never change, even when a "
+"mutable schema evolves. If the value is False, then the Content Component's "
+"can change (which is desirable in some cases - i.e. during development.)"
+msgstr ""
+"Если данное поле установлено в True, копия данной схемы будет использована в "
+"экземпляре компонента контента. Преимущество данного подхода в том, что "
+"используемая схема компонента контента не сможет быть изменена, даже когда "
+"используется изменяемая схема. Если поле установлено в False, тогда "
+"компоненты контента могут изменяться. (что может быть желательно в "
+"определенных случаях, например в процессе разработки)"
 
 #: src/zope/app/security/browser/auth.py:159
 #: src/zope/app/boston/browser/template.pt:55
@@ -4673,37 +4839,32 @@
 
 #: src/zope/app/security/browser/configure.zcml:20
 msgid "Authentication"
-msgstr ""
+msgstr "Идентификация"
 
 #: src/zope/app/security/browser/configure.zcml:20
 msgid "Authenticates Principals."
-msgstr ""
+msgstr "Идентифицируемые пользователи."
 
 #: src/zope/app/security/browser/configure.zcml:61
 msgid "Security Permission"
-msgstr ""
+msgstr "Права доступа"
 
 #: src/zope/app/security/browser/configure.zcml:67
 msgid "Add Permission"
-msgstr ""
+msgstr "Добавить права"
 
 #: src/zope/app/security/browser/configure.zcml:76
 msgid "A Security Permission"
-msgstr ""
+msgstr "Права доступа"
 
 #: src/zope/app/security/browser/configure.zcml:84
 msgid "Edit Permission"
-msgstr ""
+msgstr "Изменение прав"
 
 #: src/zope/app/security/browser/login.pt:10
 msgid "You are now logged in as ${UserTitle}."
 msgstr "Вы вошли как ${UserTitle}."
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr "Вернуться к основной странице."
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr "Вы успешно вошли!"
@@ -4720,6 +4881,11 @@
 msgid "You cancelled the login procedure."
 msgstr "Вы прервали процедуру входа."
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr "Вернуться к основной странице."
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr "Вы успешно вышли!"
@@ -4739,7 +4905,7 @@
 # Default: "Manage Services"
 #: src/zope/app/security/configure.zcml:102
 msgid "manage-site-permission"
-msgstr ""
+msgstr "Управление сервисами"
 
 # Default: "Manage Principals"
 #: src/zope/app/security/configure.zcml:107
@@ -4747,7 +4913,9 @@
 msgstr "Управление пользователями"
 
 #: src/zope/app/security/configure.zcml:112
-msgid "Manage the Zope Application, such as Restart/Shutdown or                    packing the ZODB."
+msgid ""
+"Manage the Zope Application, such as Restart/Shutdown or                    "
+"packing the ZODB."
 msgstr "Управление сервером Zope: перезапуск, остановка, паковка ZODB."
 
 # Default: "Manage Application"
@@ -4758,10 +4926,12 @@
 # Default: "View"
 #: src/zope/app/security/configure.zcml:6
 msgid "public-permission"
-msgstr ""
+msgstr "Просмотр"
 
 #: src/zope/app/security/configure.zcml:6
-msgid "Special permission indicating unconditional access.                    Public resources are always accessible."
+msgid ""
+"Special permission indicating unconditional access.                    "
+"Public resources are always accessible."
 msgstr ""
 
 # Default: "View"
@@ -4812,8 +4982,12 @@
 msgstr ""
 
 #: src/zope/app/securitypolicy/browser/configure.zcml:6
-msgid "Roles are used to combine permissions and can be assigned       to principals."
-msgstr "Роли используются для комбинации прав и могут быть ассоциированны с пользователями."
+msgid ""
+"Roles are used to combine permissions and can be assigned       to "
+"principals."
+msgstr ""
+"Роли используются для комбинации прав и могут быть ассоциированны с "
+"пользователями."
 
 #: src/zope/app/securitypolicy/browser/configure.zcml:6
 #: src/zope/app/securitypolicy/browser/configure.zcml:46
@@ -4912,8 +5086,16 @@
 msgstr "Установка"
 
 #: src/zope/app/securitypolicy/browser/manage_roleform.pt:18
-msgid "This page shows the permissions allowed and denied the role ${role_title} (id: ${role_id}). To change settings, simply select different permissions in the Allow or Deny lists. Make sure you don't select the same permission in both lists though."
-msgstr "На данной странице указаны разрешенные и запрещенные права для роли ${role_title} (идентификатор: ${role_id}). Для изменения необходимо выбрать различные права в списках Разрешить или Запретить. Проверьте что Вы не выбрали одинаковые права в обоих списках."
+msgid ""
+"This page shows the permissions allowed and denied the role ${role_title} "
+"(id: ${role_id}). To change settings, simply select different permissions in "
+"the Allow or Deny lists. Make sure you don't select the same permission in "
+"both lists though."
+msgstr ""
+"На данной странице указаны разрешенные и запрещенные права для роли "
+"${role_title} (идентификатор: ${role_id}). Для изменения необходимо выбрать "
+"различные права в списках Разрешить или Запретить. Проверьте что Вы не "
+"выбрали одинаковые права в обоих списках."
 
 #: src/zope/app/securitypolicy/browser/rolepermissionview.py:155
 msgid "Settings changed at ${date_time}"
@@ -4963,8 +5145,12 @@
 msgstr "Свойства контейнера для хранимых данных сессии"
 
 #: src/zope/app/session/browser.zcml:8
-msgid "Uses a cookie to uniquely identify a client, allowing        state to be maintained between requests"
-msgstr "Использует cookie для уникальной идентификации клиента, позволяя сохранять состояние между запросами"
+msgid ""
+"Uses a cookie to uniquely identify a client, allowing        state to be "
+"maintained between requests"
+msgstr ""
+"Использует cookie для уникальной идентификации клиента, позволяя сохранять "
+"состояние между запросами"
 
 #: src/zope/app/session/browser.zcml:8
 msgid "Cookie Client Id Manager"
@@ -4975,40 +5161,66 @@
 msgstr "Название cookie"
 
 #: src/zope/app/session/http.py:49
-msgid "Name of cookie used to maintain state. Must be unique to the site domain name, and only contain ASCII letters, digits and '_'"
-msgstr "Название cookie используемой для сохранения состояния. Должно быть уникально для доменного имени сайта и содержать только символы ASCII, цифры и символ '_'"
+msgid ""
+"Name of cookie used to maintain state. Must be unique to the site domain "
+"name, and only contain ASCII letters, digits and '_'"
+msgstr ""
+"Название cookie используемой для сохранения состояния. Должно быть уникально "
+"для доменного имени сайта и содержать только символы ASCII, цифры и символ "
+"'_'"
 
 #: src/zope/app/session/http.py:61
 msgid "Cookie Lifetime"
 msgstr "Время жизни cookie"
 
 #: src/zope/app/session/http.py:62
-msgid "Number of seconds until the browser expires the cookie. Leave blank expire the cookie when the browser is quit. Set to 0 to never expire. "
-msgstr "Количество секунд прежде чем браузер удалит cookie. При пустом значении cookie будет удалена при выходе из браузера. При значении 0 cookie будет сохранена."
+msgid ""
+"Number of seconds until the browser expires the cookie. Leave blank expire "
+"the cookie when the browser is quit. Set to 0 to never expire. "
+msgstr ""
+"Количество секунд прежде чем браузер удалит cookie. При пустом значении "
+"cookie будет удалена при выходе из браузера. При значении 0 cookie будет "
+"сохранена."
 
 #: src/zope/app/session/interfaces.py:125
 msgid "Last Access Time"
 msgstr "Время последнего доступа"
 
 #: src/zope/app/session/interfaces.py:126
-msgid "Approximate epoch time this ISessionData was last retrieved from its ISessionDataContainer"
-msgstr "Приблизительное время с начала эпохи показывающее когда ISessionData была последний раз запрошена из своего ISessionDataContainer"
+msgid ""
+"Approximate epoch time this ISessionData was last retrieved from its "
+"ISessionDataContainer"
+msgstr ""
+"Приблизительное время с начала эпохи показывающее когда ISessionData была "
+"последний раз запрошена из своего ISessionDataContainer"
 
 #: src/zope/app/session/interfaces.py:66
 msgid "Timeout"
 msgstr "Задержка"
 
 #: src/zope/app/session/interfaces.py:67
-msgid "Number of seconds before data becomes stale and may be removed. A value of '0' means no expiration."
-msgstr "Количество секунд прежде чем даные становятся устаревшими и могут быть удалены. Значение 0 значит что данные никогда не считаются устаревшими."
+msgid ""
+"Number of seconds before data becomes stale and may be removed. A value of "
+"'0' means no expiration."
+msgstr ""
+"Количество секунд прежде чем даные становятся устаревшими и могут быть "
+"удалены. Значение 0 значит что данные никогда не считаются устаревшими."
 
 #: src/zope/app/session/interfaces.py:75
 msgid "Timeout resolution (in seconds)"
 msgstr "Точность задержки (в секундах)"
 
 #: src/zope/app/session/interfaces.py:76
-msgid "Defines what the 'resolution' of item timeout is. Setting this higher allows the transience machinery to do fewer 'writes' at the expense of  causing items to time out later than the 'Data object timeout value' by  a factor of (at most) this many seconds."
-msgstr "Определяет точность задержки для объекта, т.е. интервал между проверками задержки для объекта в секундах. Установка большего значения позволяет механизму обработки задержек делать меньше операций записи ценой возможного увеличения заданной для объекта задержки."
+msgid ""
+"Defines what the 'resolution' of item timeout is. Setting this higher allows "
+"the transience machinery to do fewer 'writes' at the expense of  causing "
+"items to time out later than the 'Data object timeout value' by  a factor of "
+"(at most) this many seconds."
+msgstr ""
+"Определяет точность задержки для объекта, т.е. интервал между проверками "
+"задержки для объекта в секундах. Установка большего значения позволяет "
+"механизму обработки задержек делать меньше операций записи ценой возможного "
+"увеличения заданной для объекта задержки."
 
 # Default: "n/a"
 #: src/zope/app/size/__init__.py:42
@@ -5104,8 +5316,12 @@
 msgstr "Аргументы"
 
 #: src/zope/app/sqlscript/interfaces.py:37
-msgid "A set of attributes that can be used during the SQL command rendering process to provide dynamic data."
-msgstr "Набор атрибутов который может быть использован в SQL команде для использования динамических данных."
+msgid ""
+"A set of attributes that can be used during the SQL command rendering "
+"process to provide dynamic data."
+msgstr ""
+"Набор атрибутов который может быть использован в SQL команде для "
+"использования динамических данных."
 
 #: src/zope/app/sqlscript/interfaces.py:46
 msgid "The SQL command to be run."
@@ -5137,8 +5353,12 @@
 msgstr "Элементы управления"
 
 #: src/zope/app/traversing/browser/absoluteurl.py:28
-msgid "There isn't enough context to get URL information. This is probably due to a bug in setting up location information."
-msgstr "Не достаточно контента для получения информации URL. Возможно ошибка в установке информации пути."
+msgid ""
+"There isn't enough context to get URL information. This is probably due to a "
+"bug in setting up location information."
+msgstr ""
+"Не достаточно контента для получения информации URL. Возможно ошибка в "
+"установке информации пути."
 
 #: src/zope/app/tree/browser/navigation_macros.pt:16
 #: src/zope/app/rotterdam/navigation_macros.pt:31
@@ -5149,13 +5369,11 @@
 msgid "Redo!"
 msgstr "Вернуть!"
 
-#: src/zope/app/undo/configure.zcml:117
-#: src/zope/app/undo/undo_more.pt:6
+#: src/zope/app/undo/configure.zcml:117 src/zope/app/undo/undo_more.pt:6
 msgid "Undo more"
 msgstr "Отмена"
 
-#: src/zope/app/undo/configure.zcml:125
-#: src/zope/app/undo/undo_all.pt:6
+#: src/zope/app/undo/configure.zcml:125 src/zope/app/undo/undo_all.pt:6
 msgid "Undo all"
 msgstr "Отмена для всех"
 
@@ -5165,11 +5383,17 @@
 msgstr "Отмена транзакций любых пользователей"
 
 #: src/zope/app/undo/configure.zcml:14
-msgid "With this permission a user may undo all transactions,                    regardless of who initiated them"
-msgstr "Данные права позволят пользователю отменить все транзакции, в не зависимости от того кто их инициировал."
+msgid ""
+"With this permission a user may undo all transactions,                    "
+"regardless of who initiated them"
+msgstr ""
+"Данные права позволят пользователю отменить все транзакции, в не зависимости "
+"от того кто их инициировал."
 
 #: src/zope/app/undo/configure.zcml:7
-msgid "With this permission a user may undo his/her own                    transactions."
+msgid ""
+"With this permission a user may undo his/her own                    "
+"transactions."
 msgstr "Данные права позволят пользователю отменить его транзакции."
 
 # Default: "Undo one's one transactions"
@@ -5181,14 +5405,22 @@
 msgid "Undo!"
 msgstr "Отменить"
 
-#: src/zope/app/undo/undo_all.pt:11
-#: src/zope/app/undo/undo_more.pt:11
-msgid "Select one or more transactions from the list below and click the button below. Please be aware that you may only undo a transaction if the object has not been modified in a later transaction by you or any other user."
-msgstr "Выберите одну или несколько транзакции из списка и нажмите \"Отменить\". Будьте внимательны, Вы можете отменить транзакцию только если объект не был модифицирован в более поздней транзакции, инициированной Вами или любым другим пользователем."
+#: src/zope/app/undo/undo_all.pt:11 src/zope/app/undo/undo_more.pt:11
+msgid ""
+"Select one or more transactions from the list below and click the button "
+"below. Please be aware that you may only undo a transaction if the object "
+"has not been modified in a later transaction by you or any other user."
+msgstr ""
+"Выберите одну или несколько транзакции из списка и нажмите \"Отменить\". "
+"Будьте внимательны, Вы можете отменить транзакцию только если объект не был "
+"модифицирован в более поздней транзакции, инициированной Вами или любым "
+"другим пользователем."
 
 #: src/zope/app/undo/undo_all.pt:8
 msgid "This form lets you undo all transactions initiated by any user."
-msgstr "Данная форма позволит Вам отменить транзакции инициированные любым пользователем."
+msgstr ""
+"Данная форма позволит Вам отменить транзакции инициированные любым "
+"пользователем."
 
 #: src/zope/app/undo/undo_macros.pt:101
 msgid "View ${number} earlier transactions"
@@ -5243,16 +5475,18 @@
 msgstr "Описание"
 
 # Default: "not available"
-#: src/zope/app/undo/undo_macros.pt:62
-#: src/zope/app/undo/undo_macros.pt:69
-#: src/zope/app/undo/undo_macros.pt:76
-#: src/zope/app/undo/undo_macros.pt:87
+#: src/zope/app/undo/undo_macros.pt:62 src/zope/app/undo/undo_macros.pt:69
+#: src/zope/app/undo/undo_macros.pt:76 src/zope/app/undo/undo_macros.pt:87
 msgid "label-not-available"
 msgstr "Нет информации"
 
 #: src/zope/app/undo/undo_more.pt:8
-msgid "This form lets you undo your last transactions. You are only viewing transactions initiated by you."
-msgstr "Данная форма позволит Вам отменить ваши транзакции. Показаны только транзакции инициированные Вами."
+msgid ""
+"This form lets you undo your last transactions. You are only viewing "
+"transactions initiated by you."
+msgstr ""
+"Данная форма позволит Вам отменить ваши транзакции. Показаны только "
+"транзакции инициированные Вами."
 
 #: src/zope/app/versioncontrol/interfaces.py:197
 msgid "time value indicating the when the bookkeeping information was created"
@@ -5261,7 +5495,8 @@
 #: src/zope/app/versioncontrol/interfaces.py:203
 msgid ""
 "\n"
-"        Id of the version history related to the version controlled resource.\n"
+"        Id of the version history related to the version controlled "
+"resource.\n"
 "\n"
 "        If this isn't set (is None), \n"
 "        "
@@ -5328,7 +5563,9 @@
 msgstr ""
 
 #: src/zope/app/workflow/browser/configure.zcml:6
-msgid "Workflow Process Definitions define a particular workflow       for an object."
+msgid ""
+"Workflow Process Definitions define a particular workflow       for an "
+"object."
 msgstr "Рабочие циклы определяют конкретный рабочий цикл объекта."
 
 #: src/zope/app/workflow/browser/definition_index.pt:12
@@ -5483,7 +5720,9 @@
 msgid ""
 "The condition that is evaluated to decide if the\n"
 "                        transition can be fired or not."
-msgstr "Условие выполняющееся для определения должен происходить переход состояния или нет."
+msgstr ""
+"Условие выполняющееся для определения должен происходить переход состояния "
+"или нет."
 
 #: src/zope/app/workflow/stateful/interfaces.py:117
 msgid "Script"
@@ -5493,7 +5732,9 @@
 msgid ""
 "The script that is evaluated to decide if the\n"
 "                        transition can be fired or not."
-msgstr "Скрипт выполняющийся для определения должен происходить переход состояния или нет."
+msgstr ""
+"Скрипт выполняющийся для определения должен происходить переход состояния "
+"или нет."
 
 #: src/zope/app/workflow/stateful/interfaces.py:123
 msgid "The permission needed to fire the Transition."
@@ -5512,8 +5753,12 @@
 msgstr "Схема данных относящаяся к рабочему циклу"
 
 #: src/zope/app/workflow/stateful/interfaces.py:148
-msgid "Specifies the schema that characterizes the workflow relevant data of a process instance, found in pd.data."
-msgstr "Определяет схему которая характеризует данные относящиеся к рабочему циклу экземпляра процесса, найденные в pd.data."
+msgid ""
+"Specifies the schema that characterizes the workflow relevant data of a "
+"process instance, found in pd.data."
+msgstr ""
+"Определяет схему которая характеризует данные относящиеся к рабочему циклу "
+"экземпляра процесса, найденные в pd.data."
 
 #: src/zope/app/workflow/stateful/interfaces.py:99
 msgid "Source State"
@@ -5630,8 +5875,12 @@
 msgstr "Выполнять встроенный код"
 
 #: src/zope/app/zptpage/interfaces.py:49
-msgid "Evaluate code snippets in TAL. We usually discourage people from using this feature."
-msgstr "Выполнение блоков кода в TAL. Мы обычно отговариваем людей от использования этой возможности."
+msgid ""
+"Evaluate code snippets in TAL. We usually discourage people from using this "
+"feature."
+msgstr ""
+"Выполнение блоков кода в TAL. Мы обычно отговариваем людей от использования "
+"этой возможности."
 
 #: src/zope/app/zptpage/zptpage.py:109
 msgid "1 line"
@@ -5706,14 +5955,12 @@
 msgid "If true, the field's value cannot be changed."
 msgstr "Если установлено, то значение поля не может быть изменено."
 
-#: src/zope/schema/interfaces.py:126
-#: src/zope/schema/interfaces.py:266
+#: src/zope/schema/interfaces.py:126 src/zope/schema/interfaces.py:266
 #: src/zope/schema/interfaces.py:315
 msgid "Default Value"
 msgstr "Значение по умолчанию"
 
-#: src/zope/schema/interfaces.py:127
-#: src/zope/schema/interfaces.py:267
+#: src/zope/schema/interfaces.py:127 src/zope/schema/interfaces.py:267
 #: src/zope/schema/interfaces.py:316
 msgid ""
 "The field default value may be None or a legal\n"
@@ -5756,13 +6003,11 @@
 "        (Поля в раздельных ветках могут имет одинаковый порядок.)\n"
 "        "
 
-#: src/zope/schema/interfaces.py:220
-#: src/zope/schema/interfaces.py:303
+#: src/zope/schema/interfaces.py:220 src/zope/schema/interfaces.py:303
 msgid "Start of the range"
 msgstr "Начало диапазона"
 
-#: src/zope/schema/interfaces.py:226
-#: src/zope/schema/interfaces.py:309
+#: src/zope/schema/interfaces.py:226 src/zope/schema/interfaces.py:309
 msgid "End of the range (excluding the value itself)"
 msgstr "Конец диапазона (включая данное значение)"
 
@@ -5910,144 +6155,7 @@
 
 #: src/zope/security/interfaces.py:295
 msgid "Id as which this permission will be known and used."
-msgstr "Идентификатор под которым данные права доступа будут известны и будут использоваться."
+msgstr ""
+"Идентификатор под которым данные права доступа будут известны и будут "
+"использоваться."
 
-#: src/zwiki/browser/configure.zcml:109
-#: src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr "Родители"
-
-#: src/zwiki/browser/configure.zcml:134
-#: src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
-msgid "Comment"
-msgstr "Комментарий"
-
-#: src/zwiki/browser/configure.zcml:143
-msgid "A Comment"
-msgstr "Комментарий"
-
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr "Меню для акций относящихся к странице Wiki."
-
-#: src/zwiki/browser/configure.zcml:168
-msgid "Table of Contents"
-msgstr "Содержание"
-
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr "Wiki"
-
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr "Wiki"
-
-#: src/zwiki/browser/configure.zcml:24
-#: src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr "Контент"
-
-#: src/zwiki/browser/configure.zcml:32
-#: src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr "Поиск"
-
-#: src/zwiki/browser/configure.zcml:44
-#: src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163
-#: src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr "Подписки"
-
-#: src/zwiki/browser/configure.zcml:76
-msgid "Change Wiki Page"
-msgstr "Изменить страницу Wiki"
-
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr "Добавить Wiki"
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr "Пользователь Wiki"
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr "Пользователи Wiki, могут только просматривать и комментировать страницы Wiki."
-
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr "Страница Wiki"
-
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr "Страница Wiki"
-
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr "Комментарий страницы Wiki"
-
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr "Комментарий страницы Wiki"
-
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr "Редактор Wiki может создавать и редактировать страницы Wiki."
-
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr "Редактор Wiki"
-
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr "Администратор Wiki"
-
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr "Администратор Wiki может полностью управлять страницами Wiki."
-
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr "Просмотр страницы Wiki"
-
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr "Просмотр страницы Wiki"
-
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr "Комментирование страницы Wiki"
-
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr "Создать комментарий на странице Wiki"
-
-#: src/zwiki/configure.zcml:47
-#: src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr "Добавление страницы Wiki"
-
-#: src/zwiki/configure.zcml:56
-msgid "Edit Wiki Page"
-msgstr "Редактирование страницы Wiki"
-
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr "Удаление страницы Wiki"
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr "Смена родителя страницы Wiki"
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr "Смена родителя страницы Wiki"
-
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr "Упрощенная реализация контейнера страницы Wiki"
-

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locales/zope.pot
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locales/zope.pot	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locales/zope.pot	2005-05-02 07:44:19 UTC (rev 30224)
@@ -13,8 +13,8 @@
 ##############################################################################
 msgid ""
 msgstr ""
-"Project-Id-Version: Development/Revision: 29840\n"
-"POT-Creation-Date: Sat Apr 02 22:40:37 2005\n"
+"Project-Id-Version: Development/Revision: 30019\n"
+"POT-Creation-Date: Mon Apr 18 17:26:38 2005\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -226,29 +226,25 @@
 msgstr ""
 
 #: src/zope/app/apidoc/bookmodule/book.zcml:400
-msgid "Transaction API"
-msgstr ""
-
-#: src/zope/app/apidoc/bookmodule/book.zcml:409
 msgid "Zope Object Database (ZODB)"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:413
+#: src/zope/app/apidoc/bookmodule/book.zcml:404
 msgid "Connection Management"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:419
+#: src/zope/app/apidoc/bookmodule/book.zcml:410
 msgid "Sub-Transactions"
 msgstr ""
 
+#: src/zope/app/apidoc/bookmodule/book.zcml:416
+msgid "Collaborations"
+msgstr ""
+
 #: src/zope/app/apidoc/bookmodule/book.zcml:42
 msgid "Schema Fields"
 msgstr ""
 
-#: src/zope/app/apidoc/bookmodule/book.zcml:425
-msgid "Collaborations"
-msgstr ""
-
 #: src/zope/app/apidoc/bookmodule/book.zcml:5
 msgid "Interfaces and Schemas"
 msgstr ""
@@ -363,17 +359,6 @@
 msgid "Attributes/Properties"
 msgstr ""
 
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
-msgid "type:"
-msgstr ""
-
-#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
-#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
-msgid "Value:"
-msgstr ""
-
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:86
 #: src/zope/app/apidoc/codemodule/browser/class_index.pt:127
 msgid "Interface:"
@@ -406,6 +391,17 @@
 msgid "Documentation String"
 msgstr ""
 
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:41
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:45
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:75
+msgid "type:"
+msgstr ""
+
+#: src/zope/app/apidoc/codemodule/browser/function_index.pt:52
+#: src/zope/app/apidoc/codemodule/browser/class_index.pt:82
+msgid "Value:"
+msgstr ""
+
 #: src/zope/app/apidoc/codemodule/browser/introspector.pt:17
 msgid "Directly provided interfaces"
 msgstr ""
@@ -500,12 +496,12 @@
 msgid "XML element representing the configuration root."
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:181
+#: src/zope/app/apidoc/component.py:187
 msgid "<subscription>"
 msgstr ""
 
-#: src/zope/app/apidoc/component.py:202
-#: src/zope/app/apidoc/component.py:217
+#: src/zope/app/apidoc/component.py:208
+#: src/zope/app/apidoc/component.py:223
 msgid "<i>no name</i>"
 msgstr ""
 
@@ -550,6 +546,26 @@
 msgid "(name: ${name})"
 msgstr ""
 
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
+msgid "registered:"
+msgstr ""
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
+msgid "requires:"
+msgstr ""
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
+msgid "No interface required."
+msgstr ""
+
+#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
+#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
+msgid "provides:"
+msgstr ""
+
 #: src/zope/app/apidoc/ifacemodule/component_macros.pt:62
 msgid "No interface provided."
 msgstr ""
@@ -689,30 +705,10 @@
 msgid "Interface Finder:"
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:10
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:35
-msgid "registered:"
-msgstr ""
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:16
 msgid "presentation type:"
 msgstr ""
 
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:25
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:40
-msgid "requires:"
-msgstr ""
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:34
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:49
-msgid "No interface required."
-msgstr ""
-
-#: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:41
-#: src/zope/app/apidoc/ifacemodule/component_macros.pt:55
-msgid "provides:"
-msgstr ""
-
 #: src/zope/app/apidoc/ifacemodule/presentation_macros.pt:51
 msgid "layer:"
 msgstr ""
@@ -930,22 +926,22 @@
 msgid "Domain"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:17
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:24
 #: src/zope/app/i18n/browser/synchronize.pt:89
 msgid "Language"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:18
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:25
 msgid "Files"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:30
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.pt:37
 # Default: "Reload"
 msgid "reload-button"
 msgstr ""
 
-#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:51
-msgid "Message Catalog successfully reloaded."
+#: src/zope/app/applicationcontrol/browser/translationdomaincontrol.py:52
+msgid "Message Catalog for ${language} language in ${domain} domain successfully reloaded."
 msgstr ""
 
 #: src/zope/app/applicationcontrol/browser/zodbcontrol.pt:10
@@ -1275,8 +1271,8 @@
 #: src/zope/app/dublincore/browser/edit.pt:52
 #: src/zope/app/rdb/browser/rdbconnection.pt:29
 #: src/zope/app/error/browser/error_config.pt:47
-#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 #: src/zope/app/securitypolicy/browser/manage_roleform.pt:64
+#: src/zope/app/securitypolicy/browser/manage_permissionform.pt:87
 # Default: "Save Changes"
 msgid "save-changes-button"
 msgstr ""
@@ -1287,21 +1283,21 @@
 msgstr ""
 
 #: src/zope/app/cache/browser/cacheableedit.pt:53
-#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/cache/browser/ramstats.pt:38
+#: src/zope/app/cache/browser/ramedit.pt:56
 #: src/zope/app/file/browser/image_edit.pt:13
 #: src/zope/app/dublincore/browser/edit.pt:12
 #: src/zope/app/zopetop/widget_macros.pt:210
 #: src/zope/app/zopetop/widget_macros.pt:225
 #: src/zope/app/apidoc/ifacemodule/iface_macros.pt:125
+#: src/zope/app/rotterdam/view_macros.pt:5
+#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/rotterdam/template.pt:112
 #: src/zope/app/rotterdam/template.pt:131
 #: src/zope/app/rotterdam/template.pt:141
 #: src/zope/app/rotterdam/template_tablelayout.pt:113
 #: src/zope/app/rotterdam/template_tablelayout.pt:131
 #: src/zope/app/rotterdam/template_tablelayout.pt:138
-#: src/zope/app/rotterdam/view_macros.pt:5
-#: src/zope/app/rotterdam/view_macros.pt:24
 #: src/zope/app/container/browser/commontasks.pt:11
 #: src/zope/app/container/browser/commontasks.pt:21
 #: src/zope/app/container/browser/commontasks.pt:31
@@ -2395,8 +2391,6 @@
 #: src/zope/app/demo/widget/browser/intwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textwidget.zcml:21
 #: src/zope/app/demo/widget/browser/textareawidget.zcml:21
-#: src/zwiki/browser/configure.zcml:101
-#: src/zwiki/browser/configure.zcml:158
 msgid "View"
 msgstr ""
 
@@ -2444,8 +2438,8 @@
 msgstr ""
 
 #: src/zope/app/demo/widget/browser/popup.pt:65
-#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/file/browser/file_upload.pt:50
+#: src/zope/app/file/browser/file_add.pt:45
 #: src/zope/app/dublincore/browser/edit.pt:50
 #: src/zope/app/error/browser/error.pt:53
 #: src/zope/app/component/browser/editregistration.pt:48
@@ -2456,9 +2450,9 @@
 msgstr ""
 
 #: src/zope/app/demo/widget/browser/popup.pt:67
+#: src/zope/app/form/browser/editwizard.pt:47
 #: src/zope/app/form/browser/addwizard.pt:68
 #: src/zope/app/form/browser/edit.pt:53
-#: src/zope/app/form/browser/editwizard.pt:47
 # Default: "Change"
 msgid "submit-button"
 msgstr ""
@@ -2749,8 +2743,8 @@
 #: src/zope/app/error/browser/configure.zcml:13
 #: src/zope/app/error/browser/configure.zcml:26
 #: src/zope/app/cache/browser/cacheableedit.pt:24
-#: src/zope/app/cache/browser/ramedit.pt:10
 #: src/zope/app/cache/browser/ramstats.pt:11
+#: src/zope/app/cache/browser/ramedit.pt:10
 msgid "Errors"
 msgstr ""
 
@@ -2783,6 +2777,12 @@
 msgid "No exceptions logged."
 msgstr ""
 
+#: src/zope/app/error/browser/error.pt:22
+#: src/zope/app/error/browser/errorentry.pt:21
+#: src/zope/app/recorder/sessions.pt:15
+msgid "Time"
+msgstr ""
+
 #: src/zope/app/error/browser/error.pt:23
 #: src/zope/app/error/browser/errorentry.pt:26
 msgid "User"
@@ -2917,8 +2917,8 @@
 #: src/zope/app/file/browser/file_add.pt:47
 #: src/zope/app/schema/browser/schema_add.pt:40
 #: src/zope/app/i18n/browser/translate.pt:49
-#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/container/browser/contents.pt:149
+#: src/zope/app/container/browser/add.pt:39
 #: src/zope/app/form/browser/add.pt:53
 # Default: "Add"
 msgid "add-button"
@@ -2985,26 +2985,26 @@
 
 #: src/zope/app/file/interfaces.py:27
 #: src/zope/app/pythonpage/__init__.py:44
-#: src/zope/app/file/browser/file_add.pt:15
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "Content Type"
 msgstr ""
 
 #: src/zope/app/file/interfaces.py:28
-#: src/zope/app/file/browser/file_add.pt:15
 #: src/zope/app/file/browser/file_upload.pt:15
+#: src/zope/app/file/browser/file_add.pt:15
 msgid "The content type identifies the type of data."
 msgstr ""
 
 #: src/zope/app/file/interfaces.py:35
-#: src/zope/app/file/browser/file_add.pt:30
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "Data"
 msgstr ""
 
 #: src/zope/app/file/interfaces.py:36
-#: src/zope/app/file/browser/file_add.pt:30
 #: src/zope/app/file/browser/file_upload.pt:35
+#: src/zope/app/file/browser/file_add.pt:30
 msgid "The actual content of the object."
 msgstr ""
 
@@ -3036,18 +3036,6 @@
 msgid "An error occured."
 msgstr ""
 
-#: src/zope/app/form/browser/addwizard.pt:65
-#: src/zope/app/form/browser/editwizard.pt:44
-# Default: "Previous"
-msgid "previous-button"
-msgstr ""
-
-#: src/zope/app/form/browser/addwizard.pt:71
-#: src/zope/app/form/browser/editwizard.pt:50
-# Default: "Next"
-msgid "next-button"
-msgstr ""
-
 #: src/zope/app/form/browser/boolwidgets.py:112
 msgid "True"
 msgstr ""
@@ -3088,6 +3076,18 @@
 msgid "The browser:form Directive"
 msgstr ""
 
+#: src/zope/app/form/browser/editwizard.pt:44
+#: src/zope/app/form/browser/addwizard.pt:65
+# Default: "Previous"
+msgid "previous-button"
+msgstr ""
+
+#: src/zope/app/form/browser/editwizard.pt:50
+#: src/zope/app/form/browser/addwizard.pt:71
+# Default: "Next"
+msgid "next-button"
+msgstr ""
+
 #: src/zope/app/form/browser/editwizard.py:139
 msgid "No changes to save"
 msgstr ""
@@ -3122,26 +3122,26 @@
 msgid "Add %s"
 msgstr ""
 
-#: src/zope/app/form/browser/source.py:184
-#: src/zope/app/form/browser/source.py:207
+#: src/zope/app/form/browser/source.py:188
+#: src/zope/app/form/browser/source.py:211
 # Default: "Selected"
 msgid "SourceDisplayWidget-label"
 msgstr ""
 
-#: src/zope/app/form/browser/source.py:411
+#: src/zope/app/form/browser/source.py:415
 # Default: "Remove"
 msgid "MultipleSourceInputWidget-remove"
 msgstr ""
 
-#: src/zope/app/form/browser/source.py:51
-#: src/zope/app/form/browser/source.py:190
-#: src/zope/app/form/browser/source.py:200
+#: src/zope/app/form/browser/source.py:55
+#: src/zope/app/form/browser/source.py:194
+#: src/zope/app/form/browser/source.py:204
 # Default: "Nothing"
 msgid "SourceDisplayWidget-missing"
 msgstr ""
 
-#: src/zope/app/form/browser/source.py:62
-#: src/zope/app/form/browser/source.py:87
+#: src/zope/app/form/browser/source.py:66
+#: src/zope/app/form/browser/source.py:91
 # Default: "Invalid value"
 msgid "SourceDisplayWidget-invalid"
 msgstr ""
@@ -3276,14 +3276,22 @@
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:47
-msgid "Whether home folders should be created, if missing."
+msgid "Whether home folders should be created upon adding a assignment, if missing."
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:52
-msgid "Local Home Folder Role"
+msgid "Auto create assignment"
 msgstr ""
 
 #: src/zope/app/homefolder/interfaces.py:53
+msgid "Whether assignment and folder should be created when calling getHomeFolder, if not existing."
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:59
+msgid "Local Home Folder Role"
+msgstr ""
+
+#: src/zope/app/homefolder/interfaces.py:60
 msgid "The local role that the user will have in its home folder. This role is only set on folders that are created by the manager."
 msgstr ""
 
@@ -3326,22 +3334,10 @@
 msgid "Here you can export and import messages from your Translation Domain."
 msgstr ""
 
-#: src/zope/app/i18n/browser/exportimport.pt:21
-#: src/zope/app/i18n/browser/synchronize.pt:44
-#: src/zope/app/i18n/browser/translate.pt:16
-msgid "Select Languages:"
-msgstr ""
-
 #: src/zope/app/i18n/browser/exportimport.pt:33
 msgid "Import File Name:"
 msgstr ""
 
-#: src/zope/app/i18n/browser/exportimport.pt:4
-#: src/zope/app/i18n/browser/translate.pt:4
-#: src/zope/app/i18n/browser/translatemessage.pt:4
-msgid "Translation Domain - Translate"
-msgstr ""
-
 #: src/zope/app/i18n/browser/exportimport.pt:40
 # Default: "Export"
 msgid "export-button"
@@ -3369,10 +3365,9 @@
 msgid "synchronize-button"
 msgstr ""
 
-#: src/zope/app/i18n/browser/synchronize.pt:88
-#: src/zope/app/i18n/browser/translate.pt:77
-#: src/zope/app/i18n/browser/translatemessage.pt:17
-msgid "Message Id"
+#: src/zope/app/i18n/browser/synchronize.pt:90
+#: src/zope/app/recorder/sessions.pt:18
+msgid "Status"
 msgstr ""
 
 #: src/zope/app/i18n/browser/synchronize.py:34
@@ -3407,11 +3402,23 @@
 msgid "Delete Messages"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:16
+#: src/zope/app/i18n/browser/synchronize.pt:44
+#: src/zope/app/i18n/browser/exportimport.pt:21
+msgid "Select Languages:"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translate.pt:35
 # Default: "Edit"
 msgid "edit-button"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:4
+#: src/zope/app/i18n/browser/translatemessage.pt:4
+#: src/zope/app/i18n/browser/exportimport.pt:4
+msgid "Translation Domain - Translate"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translate.pt:46
 msgid "New Language:"
 msgstr ""
@@ -3425,6 +3432,12 @@
 msgid "filter-button"
 msgstr ""
 
+#: src/zope/app/i18n/browser/translate.pt:77
+#: src/zope/app/i18n/browser/translatemessage.pt:17
+#: src/zope/app/i18n/browser/synchronize.pt:88
+msgid "Message Id"
+msgstr ""
+
 #: src/zope/app/i18n/browser/translatemessage.pt:31
 msgid "Edit Message"
 msgstr ""
@@ -3832,8 +3845,6 @@
 #: src/zope/app/session/browser.zcml:15
 #: src/zope/app/session/browser.zcml:38
 #: src/zope/app/zptpage/browser/configure.zcml:39
-#: src/zwiki/browser/configure.zcml:76
-#: src/zwiki/browser/configure.zcml:160
 #: src/zope/app/securitypolicy/browser/configure.zcml:35
 msgid "Edit"
 msgstr ""
@@ -4215,21 +4226,10 @@
 msgid "Recorded Sessions"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:15
-#: src/zope/app/error/browser/error.pt:22
-#: src/zope/app/error/browser/errorentry.pt:21
-msgid "Time"
-msgstr ""
-
 #: src/zope/app/recorder/sessions.pt:16
 msgid "Method"
 msgstr ""
 
-#: src/zope/app/recorder/sessions.pt:18
-#: src/zope/app/i18n/browser/synchronize.pt:90
-msgid "Status"
-msgstr ""
-
 #: src/zope/app/recorder/sessions.pt:36
 msgid "Create Functional Doctest"
 msgstr ""
@@ -4663,11 +4663,6 @@
 msgid "You are now logged in as ${UserTitle}."
 msgstr ""
 
-#: src/zope/app/security/browser/login.pt:14
-#: src/zope/app/security/browser/logout.pt:12
-msgid "Back to the main page."
-msgstr ""
-
 #: src/zope/app/security/browser/login.pt:6
 msgid "Login successful!"
 msgstr ""
@@ -4684,6 +4679,11 @@
 msgid "You cancelled the login procedure."
 msgstr ""
 
+#: src/zope/app/security/browser/logout.pt:12
+#: src/zope/app/security/browser/login.pt:14
+msgid "Back to the main page."
+msgstr ""
+
 #: src/zope/app/security/browser/logout.pt:6
 msgid "Logout successful!"
 msgstr ""
@@ -5852,145 +5852,3 @@
 msgid "Id as which this permission will be known and used."
 msgstr ""
 
-#: src/zwiki/browser/configure.zcml:109
-#: src/zwiki/browser/configure.zcml:161
-msgid "Parents"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:134
-#: src/zwiki/browser/configure.zcml:143
-#: src/zwiki/browser/configure.zcml:159
-msgid "Comment"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:143
-msgid "A Comment"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:152
-msgid "Menu for Wiki Page related actions."
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:168
-msgid "Table of Contents"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:17
-msgid "Wiki"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:17
-msgid "A Wiki"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:24
-#: src/zwiki/browser/configure.zcml:162
-msgid "TOC"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:32
-#: src/zwiki/browser/configure.zcml:169
-msgid "Search"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:44
-#: src/zwiki/browser/configure.zcml:118
-#: src/zwiki/browser/configure.zcml:163
-#: src/zwiki/browser/configure.zcml:170
-msgid "Subscriptions"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:76
-msgid "Change Wiki Page"
-msgstr ""
-
-#: src/zwiki/browser/configure.zcml:8
-msgid "Add Wiki"
-msgstr ""
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki User"
-msgstr ""
-
-#: src/zwiki/configure.zcml:14
-msgid "Wiki visitors, which can only view and comment on wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "A Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:144
-#: src/zwiki/browser/configure.zcml:69
-msgid "Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:188
-msgid "A Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:188
-msgid "Wiki Page Comment"
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "The Wiki Editor can create and edit wikis."
-msgstr ""
-
-#: src/zwiki/configure.zcml:19
-msgid "Wiki Editor"
-msgstr ""
-
-#: src/zwiki/configure.zcml:24
-msgid "Wiki Administrator"
-msgstr ""
-
-#: src/zwiki/configure.zcml:24
-msgid "The Wiki Admin can fully manage wiki pages."
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:29
-msgid "View a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:38
-msgid "Make a comment on Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:47
-#: src/zwiki/configure.zcml:47
-#: src/zwiki/browser/configure.zcml:60
-msgid "Add Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:56
-#: src/zwiki/configure.zcml:56
-msgid "Edit Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:65
-#: src/zwiki/configure.zcml:65
-msgid "Delete Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:74
-msgid "Reparent a Wiki Page"
-msgstr ""
-
-#: src/zwiki/configure.zcml:98
-msgid "Minimal Wiki Page Container implementation "
-msgstr ""
-

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/locking/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/locking/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/locking/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -3,4 +3,18 @@
 
   <permission id="zope.app.locking.UseLocking" title="Use locking" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="locking"
+        title="Object Locking"
+        doc_path="README.txt"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/module/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/module/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/module/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -34,4 +34,18 @@
 
   <include package=".browser" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="module"
+        title="Persistent Modules"
+        doc_path="README.txt"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/pagelet/README.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/pagelet/README.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/pagelet/README.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -99,8 +99,9 @@
 
 Inside a pagetemplate of a view, the registered pagelets can be called by
 the tal:pagelets command. The return value is a list of macros where each
-macro correspondents to a registered pagelet. This macros can be used to
-invoke the pagelets::
+macro correspondents to a registered pagelet. The pagelet engine always uses
+the macro from the pagelet which has the same name like the pagelet itself.
+This macros can be used to invoke the pagelets:
 
   <div class="row">
     <tal:repeat="pagelets pagelets:zope.app.demo.pagelet.interfaces.IDemoSlot">

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/SETUP.cfg (from rev 30223, Zope3/trunk/src/zope/app/pluggableauth/SETUP.cfg)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/SETUP.cfg
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/browser/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/browser/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/browser/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,6 +1,7 @@
 <zope:configure 
    xmlns="http://namespaces.zope.org/browser"
-   xmlns:zope="http://namespaces.zope.org/zope">
+   xmlns:zope="http://namespaces.zope.org/zope"
+   i18n_domain="zope">
 
 <!-- Pluggable Authentication -->
 

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/zope.app.pluggableauth-configure.zcml (from rev 30223, Zope3/trunk/src/zope/app/pluggableauth/zope.app.pluggableauth-configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/pluggableauth/zope.app.pluggableauth-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/preference/SETUP.cfg (from rev 30223, Zope3/trunk/src/zope/app/preference/SETUP.cfg)

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-configure.zcml (from rev 30223, Zope3/trunk/src/zope/app/preference/preference-configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-meta.zcml (from rev 30223, Zope3/trunk/src/zope/app/preference/preference-meta.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/preference/preference-meta.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -22,7 +22,8 @@
 from persistent import Persistent
 from persistent.dict import PersistentDict
 from BTrees.OOBTree import OOBTree
-from zope.interface import implements
+from zope import interface, component
+import zope.security.interfaces
 
 from zope.app.annotation.interfaces import IAnnotations
 from zope.app.container.contained import Contained
@@ -36,7 +37,7 @@
     The utility ID is 'PrincipalAnnotation'.
     """
 
-    implements(IPrincipalAnnotationUtility)
+    interface.implements(IPrincipalAnnotationUtility)
 
     def __init__(self):
         self.annotations = OOBTree()
@@ -70,7 +71,7 @@
 class Annotations(Persistent, Location):
     """Stores annotations."""
 
-    implements(IAnnotations)
+    interface.implements(IAnnotations)
 
     def __init__(self, principalId, store=None):
         self.principalId = principalId
@@ -106,21 +107,40 @@
     def get(self, key, default=None):
         return self.data.get(key, default)
 
+def annotations(principal):
+    """adapt principal to annotations via principal annotation utility.
+    
+    To illustrate, we'll register the adapter and a dummy 
+    principal annotation utility.
+    
+    >>> component.provideAdapter(annotations)
+    >>> class DummyPrincipal(object):
+    ...     interface.implements(zope.security.interfaces.IPrincipal)
+    ...     def __init__(self, id, title=None, description=None):
+    ...         self.id = id
+    ...         self.title = title
+    ...         self.description = description
+    ...
+    >>> dummy_annotation = {}
+    >>> class DummyPAU(object):
+    ...     interface.implements(interfaces.IPrincipalAnnotationUtility)
+    ...     def getAnnotations(self, principal):
+    ...         if principal.id == 'sue':
+    ...             return dummy_annotation
+    ...         raise NotImplementedError
+    ...
+    >>> pau = DummyPAU()
+    >>> component.provideUtility(pau)
+    >>> sue = DummyPrincipal('sue')
+    >>> annotation = IAnnotations(sue)
+    >>> annotation is dummy_annotation
+    True
+    """ # TODO move this out to a doctest file when we have one...
+    utility = component.getUtility(IPrincipalAnnotationUtility)
+    return utility.getAnnotations(principal)
+component.adapter(zope.security.interfaces.IPrincipal)(annotations)
+interface.implementer(IAnnotations)(annotations)
 
-class AnnotationsForPrincipal(object):
-    """Adapter from IPrincipal to `IAnnotations` for a
-    `PrincipalAnnotationUtility`.
-
-    Register an *instance* of this class as an adapter.
-    """
-
-    def __init__(self, utility):
-        self.utility = utility
-
-    def __call__(self, principal):
-        return self.utility.getAnnotationsById(principal.id)
-
-
 #############################################################################
 # BBB: 12/20/2004
 PrincipalAnnotationService = PrincipalAnnotationUtility

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -33,4 +33,6 @@
       handler=".bootstrap.bootStrapSubscriber"
       />
 
+  <adapter factory=".annotations" />
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/tests.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/tests.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/principalannotation/tests.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -15,6 +15,7 @@
 
 $Id$
 """
+import doctest
 from unittest import TestCase, TestLoader, TextTestRunner
 
 import zope.component
@@ -22,11 +23,10 @@
 from zope.app import zapi
 from zope.app.annotation.interfaces import IAnnotations
 from zope.app.principalannotation import PrincipalAnnotationUtility
-from zope.app.principalannotation import AnnotationsForPrincipal
 from zope.app.security.interfaces import IPrincipal
 from zope.app.component.testing import PlacefulSetup
 from zope.app.testing import ztapi, setup
-from interfaces import IPrincipalAnnotationUtility
+from zope.app.principalannotation.interfaces import IPrincipalAnnotationUtility
 
 class Principal(object):
 
@@ -41,7 +41,6 @@
     def setUp(self):
         PlacefulSetup.setUp(self)
         sm = self.buildFolders(site='/')
-
         self.util = PrincipalAnnotationUtility()
         zope.component.provideUtility(self.util, IPrincipalAnnotationUtility)
 
@@ -83,20 +82,12 @@
 
         self.assertEquals(parentAnnotation.get("foo"), None)
 
-
-    def testAdapter(self):
-        p = Principal('somebody')
-        ztapi.provideAdapter(IPrincipal, IAnnotations,
-                             AnnotationsForPrincipal(self.util))
-        annotations = IAnnotations(p)
-        annotations["test"] = "bar"
-        annotations = IAnnotations(p)
-        self.assertEquals(annotations["test"], "bar")
-
-
 def test_suite():
     loader=TestLoader()
-    return loader.loadTestsFromTestCase(PrincipalAnnotationTests)
+    tests = loader.loadTestsFromTestCase(PrincipalAnnotationTests)
+    import zope.app.principalannotation
+    tests.addTest(doctest.DocTestSuite(zope.app.principalannotation))
+    return tests
 
 if __name__=='__main__':
     TextTestRunner().run(test_suite())

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/publication/ftests.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/publication/ftests.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/publication/ftests.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -21,6 +21,7 @@
 def test_suite():
     return unittest.TestSuite((
         functional.FunctionalDocFileSuite('notfound.txt'),
+        functional.FunctionalDocFileSuite('methodnotallowed.txt'),
         ))
 
 if __name__ == '__main__':

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/publication/http.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/publication/http.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/publication/http.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -19,9 +19,33 @@
 from zope.publisher.publish import mapply
 
 from zope.app import zapi
+from zope.interface import Interface, implements, Attribute
+from zope.interface.common.interfaces import IException
 from zope.app.http.interfaces import IHTTPException
 from zope.app.publication.zopepublication import ZopePublication
 
+
+class IMethodNotAllowed(IException):
+    """An exception that signals the 405 Method Not Allowed HTTP error"""
+
+    object = Attribute("""The object on which the error occured""")
+
+    request = Attribute("""The request in which the error occured""")
+
+
+class MethodNotAllowed(Exception):
+    """An exception that signals the 405 Method Not Allowed HTTP error"""
+
+    implements(IMethodNotAllowed)
+
+    def __init__(self, object, request):
+        self.object = object
+        self.request = request
+
+    def __str__(self):
+        return "%r, %r" % (object, request)
+
+
 class BaseHTTPPublication(ZopePublication):
     """Base for HTTP-based protocol publications"""
 
@@ -32,12 +56,16 @@
         txn.setExtendedInfo('request_info', request_info)
         return txn
 
+
 class HTTPPublication(BaseHTTPPublication):
     """HTTP-specific publication"""
 
     def callObject(self, request, ob):
         # Exception handling, dont try to call request.method
+        orig = ob
         if not IHTTPException.providedBy(ob):
-            ob = zapi.getMultiAdapter((ob, request), name=request.method)
-            ob = getattr(ob, request.method)
+            ob = zapi.queryMultiAdapter((ob, request), name=request.method)
+            ob = getattr(ob, request.method, None)
+            if ob is None:
+                raise MethodNotAllowed(orig, request)
         return mapply(ob, request.getPositionalArguments(), request)

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/publication/methodnotallowed.txt (from rev 30223, Zope3/trunk/src/zope/app/publication/methodnotallowed.txt)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/publication/methodnotallowed.txt
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/publication/zopepublication.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/publication/zopepublication.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/publication/zopepublication.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -29,7 +29,7 @@
 from zope.component.exceptions import ComponentLookupError
 from zope.interface import implements, providedBy
 from zope.publisher.publish import mapply
-from zope.publisher.interfaces import Retry, IExceptionSideEffects
+from zope.publisher.interfaces import Retry, IExceptionSideEffects, IHeld
 from zope.publisher.interfaces import IRequest, IPublication
 from zope.security.management import newInteraction, endInteraction
 from zope.security.checker import ProxyFactory
@@ -54,12 +54,21 @@
 
 class Cleanup(object):
 
+    implements(IHeld)
+
     def __init__(self, f):
         self._f = f
 
-    def __del__(self):
+    def release(self):
         self._f()
+        self._f = None
 
+    def __del__(self):
+        if self._f is not None:
+            logging.getLogger('SiteError').error(
+                "Cleanup without request close")
+            self._f()
+
 class ZopePublication(PublicationTraverse):
     """Base Zope publication specification."""
     implements(IPublication)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -21,7 +21,13 @@
 
     # Make sure the message id gets never proxied
     from zope.i18n.messageid import MessageID
+    from zope.i18nmessageid import Message
+    # TODO because MessageIDs are mutable, this is a security hole.  This hole
+    # is one of the primary reasons for the development of the Message 
+    # replacement.  See zope/i18nmessageid/messages.txt.
     defineChecker(MessageID, NoProxy)
+    # this, however, is not a security hole, because Messages are immutable.
+    defineChecker(Message, NoProxy)
 
     # add __parent__ and __name__ to always available names
     import zope.security.checker

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/security/_protections.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -89,6 +89,27 @@
 
 <!-- ===================================================================== -->
 
+<content class="BTrees.IFBTree.IFBTree">
+   <allow attributes="__str__ __contains__ __getitem__ __iter__ __len__
+                      byValue get has_key items iteritems iterkeys
+                      itervalues keys maxKey minKey values" /> 
+</content>
+<content class="BTrees.IFBTree.IFBucket">
+   <allow attributes="__contains__ __getitem__ __iter__ __len__ __str__
+                      byValue get has_key items iteritems iterkeys
+                      itervalues keys maxKeyminKey values" /> 
+</content>
+<content class="BTrees.IFBTree.IFSet">
+   <allow attributes="__contains__ __iter__ __len__ __str__ has_key insert
+                      keys maxKey minKey" /> 
+</content>
+<content class="BTrees.IFBTree.IFTreeIterator">
+   <allow attributes="__iter__ __str__ __getitem__ __len__
+                      __contains__ next" /> 
+</content>
+
+<!-- ===================================================================== -->
+
 <content class="persistent.list.PersistentList">
    <allow attributes="__getitem__ __getslice__ __len__ __iter__
                       __contains__ index count" /> 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/securitypolicy/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/securitypolicy/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/securitypolicy/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -87,4 +87,20 @@
       name="Role Ids"
       factory=".vocabulary.RoleIdsVocabulary" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="zopepolicy"
+        title="Default Security Policy"
+        doc_path="zopepolicy.txt"
+        parent="security"
+        />
+
+  </configure>
+
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/session/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/session/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/session/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,7 +1,9 @@
 <configure 
     xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser">
-
+    xmlns:browser="http://namespaces.zope.org/browser"
+    i18n_domain="zope"
+    >
+    
   <adapter
       for="zope.publisher.interfaces.IRequest"
       provides=".interfaces.IClientId"
@@ -71,4 +73,24 @@
 
   <include file="browser.zcml" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="session"
+        title="Sessions"
+        doc_path="design.txt"
+        />
+    <apidoc:bookchapter
+        id="api"
+        title="API"
+        doc_path="api.txt"
+        parent="session"
+        />
+
+  </configure>
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/testing/functional.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/testing/functional.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/testing/functional.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -357,14 +357,20 @@
                     object = publication.getApplication(request)
                     object = request.traverse(object)
                     publication.afterTraversal(request, object)
-                except (KeyError, NameError, AttributeError, Unauthorized, Forbidden):
-                    e = traceback.format_exception_only(*sys.exc_info()[:2])[-1]
+                except (KeyError, NameError, AttributeError, Unauthorized,
+                        Forbidden):
+                    e = traceback.format_exception_only(
+                        *sys.exc_info()[:2])[-1]
                     errors.append((a, e.strip()))
             finally:
                 publication.endRequest(request, object)
                 self.setSite(old_site)
-                # Bad Things(TM) related to garbage collection and special
-                # __del__ methods happen if request.close() is not called here
+
+                # Make sure we don't have pending changes
+                abort()
+                
+                # The request should always be closed to free resources
+                # held by the request
                 if request:
                     request.close()
         if errors:
@@ -537,7 +543,7 @@
 class HTTPCaller(CookieHandler):
     """Execute an HTTP request string via the publisher"""
 
-    def __call__(self, request_string, handle_errors=True):
+    def __call__(self, request_string, handle_errors=True, form=None):
         # Commit work done by previous python code.
         commit()
 
@@ -589,6 +595,11 @@
             # Only browser requests have skins
             interface.directlyProvides(request, _getDefaultSkin())
 
+        if form is not None:
+            if request.form:
+                raise ValueError("only one set of form values can be provided")
+            request.form = form
+
         header_output = HTTPHeaderOutput(
             protocol, ('x-content-type-warning', 'x-powered-by'))
         request.response.setHeaderOutput(header_output)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/testing/test.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/testing/test.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/testing/test.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -133,9 +133,6 @@
 --repeat n
     Run the selected tests n times.
 
--m
--M  minimal GUI. See -U.
-
 -P
 --profile
     Run the tests under hotshot and display the top 50 stats, sorted by
@@ -180,25 +177,7 @@
 -u
 --skip-functional
     CHANGED. Run unit tests but not functional tests.
-    Note that the meaning of -u is changed from its former meaning,
-    which is now specified by -U or --gui.
 
--U
---gui
-    Use the PyUnit GUI instead of output to the command line.  The GUI
-    imports tests on its own, taking care to reload all dependencies
-    on each run.  The debug (-d), verbose (-v), progress (-p), and
-    Loop (-L) options will be ignored.  The testfilter filter is also
-    not applied.
-
--m
--M
---minimal-gui
-    Note: -m is DEPRECATED in favour of -M or --minimal-gui.
-    -m starts the gui minimized.  Double-clicking the progress bar
-    will start the import and run all tests.
-
-
 -v
 --verbose
     Verbose output.  With one -v, unittest prints a dot (".") for each
@@ -247,12 +226,7 @@
     "testWriteClient".  Useful to avoid a specific failing test you don't
     want to deal with just yet.
 
-    test.py -M . "!^testWriteClient$"
 
-    As before, but now opens up a minimized PyUnit GUI window (only showing
-    the progress bar).  Useful for refactoring runs where you continually want
-    to make sure all tests still pass.
-
 $Id$
 """
 import gc
@@ -665,21 +639,6 @@
                 new.addTest(filtered)
     return new
 
-def gui_runner(files, test_filter):
-    if BUILD_INPLACE:
-        utildir = os.path.join(os.getcwd(), "utilities")
-    else:
-        utildir = os.path.join(os.getcwd(), "..", "utilities")
-    sys.path.append(utildir)
-    import unittestgui
-    suites = []
-    for file in files:
-        suites.append(finder.module_from_path(file) + ".test_suite")
-
-    suites = ", ".join(suites)
-    minimal = (GUI == "minimal")
-    unittestgui.main(suites, minimal)
-
 class TrackRefs(object):
     """Object to track reference counts across test runs."""
 
@@ -857,9 +816,7 @@
         FunctionalTestSetup(config_file)
 
     numbad = 0
-    if GUI:
-        gui_runner(files, test_filter)
-    elif LOOP:
+    if LOOP:
         if REFCOUNT:
             rc = sys.gettotalrefcount()
             track = TrackRefs()
@@ -929,7 +886,6 @@
     global TEST_FILTER
     global VERBOSE
     global LOOP
-    global GUI
     global TRACE
     global REFCOUNT
     global DEBUG
@@ -958,7 +914,6 @@
     TEST_FILTERS = []
     VERBOSE = 0
     LOOP = 0
-    GUI = False
     TRACE = False
     REFCOUNT = False
     DEBUG = False # Don't collect test results; simply let tests crash
@@ -997,7 +952,7 @@
                                     "at-level=",
                                     "pychecker", "debug", "pdebug",
                                     "gc-threshold=", "gc-option=",
-                                    "loop", "gui", "minimal-gui",
+                                    "loop",
                                     "test=", "module=",
                                     "profile", "progress", "refcount", "trace",
                                     "top-fifty", "verbose", "repeat=",
@@ -1055,12 +1010,6 @@
             LOOP = 1000000000
         elif k in ("-N", "--repeat"):
             LOOP = int(v)
-        elif k == "-m":
-            GUI = "minimal"
-            msg = "Use -M or --minimal-gui instead of -m."
-            warnings.warn(msg, DeprecationWarning)
-        elif k in ("-M", "--minimal-gui"):
-            GUI = "minimal"
         elif k in ("-P", "--profile"):
             PROFILE = True
         elif k in ("-p", "--progress"):
@@ -1072,8 +1021,6 @@
         elif k in ("-t", "--top-fifty"):
             if not TIMETESTS:
                 TIMETESTS = 50
-        elif k in ("-U", "--gui"):
-            GUI = 1
         elif k in ("-1", "--report-only-first-doctest-failure"):
             REPORT_ONLY_FIRST_DOCTEST_FAILURE = True
         elif k in ("-v", "--verbose"):

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/tree/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/tree/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/tree/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -48,5 +48,19 @@
 
   <include package=".browser" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="tree"
+        title="Zope Tree"
+        doc_path="README.txt"
+        />
+
+  </configure>
+
 </configure>
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/versioncontrol/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/versioncontrol/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/versioncontrol/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,4 +4,18 @@
   <permission id="zope.app.versioncontrol.UseVersionControl"
               title="Use version control" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="versioncontrol"
+        title="Version Control"
+        doc_path="README.txt"
+        />
+
+  </configure>
+
 </configure>

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/wfmc/configure.zcml (from rev 30223, Zope3/trunk/src/zope/app/wfmc/configure.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/app/wfmc/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Zope3/branches/dominik-locatableadapters/src/zope/app/winservice (from rev 30223, Zope3/trunk/src/zope/app/winservice)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/app/zapi/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/app/zapi/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/app/zapi/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,6 +4,20 @@
   <interface
       interface=".interfaces.IZAPI" />
 
+  <!-- Registering documentation with API doc -->
+  <configure
+      xmlns:apidoc="http://namespaces.zope.org/apidoc"
+      xmlns:zcml="http://namespaces.zope.org/zcml"
+      zcml:condition="have apidoc">
+
+    <apidoc:bookchapter
+        id="zapi"
+        title="ZAPI"
+        doc_path="README.txt"
+        />
+
+  </configure>
+
 </configure>
 
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/component/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/component/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/component/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -315,10 +315,7 @@
 
 def provideAdapter(factory, adapts=None, provides=None, name=''):
     if provides is None:
-        if IFactory.providedBy(factory):
-            provides = factory.getInterfaces()
-        else:
-            provides = list(implementedBy(factory))
+        provides = list(implementedBy(factory))
         if len(provides) == 1:
             provides = provides[0]
         else:
@@ -334,10 +331,7 @@
 
 def provideSubscriptionAdapter(factory, adapts=None, provides=None):
     if provides is None:
-        if IFactory.providedBy(factory):
-            provides = factory.getInterfaces()
-        else:
-            provides = list(implementedBy(factory))
+        provides = list(implementedBy(factory))
         if len(provides) == 1:
             provides = provides[0]
         else:

Modified: Zope3/branches/dominik-locatableadapters/src/zope/component/site.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/component/site.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/component/site.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -76,9 +76,13 @@
     
     def getAdapters(self, objects, provided):
         """See ISiteManager interface"""
-        return [(name, adapter(*objects))
-                for name, adapter in self.adapters.lookupAll(
-                                        map(providedBy, objects), provided)]
+        result = []
+        for name, factory in self.adapters.lookupAll(map(providedBy, objects),
+                                                     provided):
+            adapter = factory(*objects)
+            if adapter is not None:
+                result.append((name, adapter))
+        return result
 
     def subscribers(self, required, provided):
         """See ISiteManager interface"""

Modified: Zope3/branches/dominik-locatableadapters/src/zope/component/tests.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/component/tests.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/component/tests.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -436,6 +436,18 @@
       >>> adapters.sort()
       >>> [(name, adapter.__class__.__name__) for name, adapter in adapters]
       [(u'', 'Comp'), (u'foo', 'Comp')]
+
+    Note that the output doesn't include None values. If an adapter
+    factory returns None, it is as if it wasn't present.
+
+      >>> zope.component.getGlobalSiteManager().provideAdapter(
+      ...     [I1], I2, 'nah', lambda context: None)
+      >>> adapters = zope.component.getAdapters((ob,), I2)
+      >>> adapters.sort()
+      >>> [(name, adapter.__class__.__name__) for name, adapter in adapters]
+      [(u'', 'Comp'), (u'foo', 'Comp')]
+      
+
     """
 
 def testUtility():

Modified: Zope3/branches/dominik-locatableadapters/src/zope/configuration/xmlconfig.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/configuration/xmlconfig.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/configuration/xmlconfig.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -233,9 +233,10 @@
 
         `expression` is a string of the form "verb arguments".
 
-        Currently the only supported verb is 'have'.  It takes one argument:
-        the name of a feature.
+        Currently the two supported verba are 'have' and 'installed'.
 
+        The 'have' verb takes one argument: the name of a feature.
+
         >>> from zope.configuration.config import ConfigurationContext
         >>> context = ConfigurationContext()
         >>> context.provideFeature('apidoc')
@@ -261,6 +262,31 @@
         Traceback (most recent call last):
           ...
         ValueError: Feature name missing: 'have'
+
+
+        The 'installed' verb takes one argument: the dotted name of a
+        pacakge. If the pacakge is found, in other words, can be imported,
+        then the condition will return true.
+
+        >>> from zope.configuration.config import ConfigurationContext
+        >>> context = ConfigurationContext()
+        >>> c = ConfigurationHandler(context, testing=True)
+        >>> c.evaluateCondition('installed zope.interface')
+        True
+        >>> c.evaluateCondition('installed zope.foo')
+        False
+
+        Ill-formed expressions raise an error
+
+        >>> c.evaluateCondition("installed foo bar")
+        Traceback (most recent call last):
+          ...
+        ValueError: Only one package allowed: 'installed foo bar'
+
+        >>> c.evaluateCondition("installed")
+        Traceback (most recent call last):
+          ...
+        ValueError: Package name missing: 'installed'
         """
         arguments = expression.split(None)
         verb = arguments.pop(0)
@@ -270,6 +296,16 @@
             if len(arguments) > 1:
                 raise ValueError("Only one feature allowed: %r" % expression)
             return self.context.hasFeature(arguments[0])
+        elif verb == 'installed':
+            if not arguments:
+                raise ValueError("Package name missing: %r" % expression)
+            if len(arguments) > 1:
+                raise ValueError("Only one package allowed: %r" % expression)
+            try:
+                __import__(arguments[0])
+            except ImportError:
+                return False
+            return True
         else:
             raise ValueError("Invalid ZCML condition: %r" % expression)
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18n/DEPENDENCIES.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18n/DEPENDENCIES.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18n/DEPENDENCIES.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,3 +1,4 @@
+pytz
 zope.component
 zope.interface
 zope.schema

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18n/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18n/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18n/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -19,6 +19,7 @@
 import warnings
 from zope.component import queryUtility
 from zope.i18nmessageid import MessageIDFactory, MessageID
+from zope.i18nmessageid import MessageFactory, Message
 from zope.i18n.interfaces import ITranslationDomain
 
 # Set up regular expressions for finding interpolation variables in text.
@@ -33,9 +34,11 @@
 def _translate(msgid, domain=None, mapping=None, context=None,
                target_language=None, default=None):
 
-    if isinstance(msgid, MessageID):
+    if isinstance(msgid, (MessageID, Message)):
         domain = msgid.domain
         default = msgid.default
+        if default is None:
+            default = msgid
         mapping = msgid.mapping
 
     util = queryUtility(ITranslationDomain, domain)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18n/i18nobject.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18n/i18nobject.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18n/i18nobject.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -44,7 +44,7 @@
 ------------
 
 There will be an interface called II18nObject (which inherits I18nContent
-of course), which is a cameleon-like container, as it adapts to the
+of course), which is a chameleon-like container, as it adapts to the
 properties of the contained object type. In order to accomplish all this,
 you will have to implement your own traverser which looks up the correct
 subobject.

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18n/locales/tests/test_xmlfactory.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18n/locales/tests/test_xmlfactory.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18n/locales/tests/test_xmlfactory.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -25,6 +25,9 @@
 class LocaleXMLFileTestCase(TestCase):
     """This test verifies that every locale XML file can be loaded."""
 
+    # only run when running tests of level 2
+    level = 2
+
     def __init__(self, path):
         self.__path = path
         TestCase.__init__(self)
@@ -49,20 +52,14 @@
                 
                     
 
-##def test_suite():
-##    suite = TestSuite()
-##    locale_dir = os.path.join(os.path.dirname(zope.i18n.__file__),
-##                              'locales', 'data')
-##    for path in os.listdir(locale_dir):
-##        if not path.endswith(".xml"):
-##            continue
-##        path = os.path.join(locale_dir, path)
-##        case = LocaleXMLFileTestCase(path)
-##        suite.addTest(case)
-##    return suite
-
-# Note: These tests are disabled, just because they take a long time to run.
-#       You should run these tests if you update the parsing code and/or
-#       update the Locale XML Files.
 def test_suite():
-    return None
+   suite = TestSuite()
+   locale_dir = os.path.join(os.path.dirname(zope.i18n.__file__),
+                             'locales', 'data')
+   for path in os.listdir(locale_dir):
+       if not path.endswith(".xml"):
+           continue
+       path = os.path.join(locale_dir, path)
+       case = LocaleXMLFileTestCase(path)
+       suite.addTest(case)
+   return suite

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18n/messageid.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18n/messageid.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18n/messageid.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -13,3 +13,4 @@
 ##############################################################################
 "$Id$"
 from zope.i18nmessageid import MessageID, MessageIDFactory
+from zope.i18nmessageid import Message, MessageFactory

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -15,5 +15,9 @@
 
 $Id$
 """
+# this is the old message id implementation; it is on the slate to be
+# deprecated sometime in the future.
 from messageid import MessageID, MessageIDFactory
+# this is the new message id implementation.  It is the one to use if you
+# have a choice.  Please see messages.txt for more details.
 from message import Message, MessageFactory

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messageid.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messageid.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messageid.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -16,6 +16,11 @@
 $Id$
 """
 
+# Note that this module is slated for deprecation.  Please see messages.txt
+# in this directory for more information.  The short advice is to use 
+# message.Message instead of messageid.MessageID, and message.MessageFactory
+# instead of messageid.MessageIDFactory.
+
 class MessageID(unicode):
     """Message ID.
 
@@ -55,7 +60,7 @@
     >>> id.default = u'blah'
     >>> id.default
     u'blah'
-    
+
     It is quite common to pass an abstract identifier as message id
     and then a default text:
 

Modified: Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messages.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messages.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/i18nmessageid/messages.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -50,9 +50,10 @@
   >>> robot.default
   u'${name} is a robot.'
   >>> robot.mapping
-  >>> 
+  >>> robot.domain
+  'futurama'
 
-The messags's attributes are considered part of the immutable message
+The message's attributes are considered part of the immutable message
 object.  They cannot be changed once the message id is created:
 
   >>> robot.domain = "planetexpress"
@@ -110,8 +111,8 @@
 
 The proposed solution for backward compatability is to support both
 implementations in parallel, deprecating the mutable one.  A separate
-factory, 'I18nMessageFactory', will instanciate immutable message ids,
-while the deprecated oldone will continue to work like before.
+factory, 'I18nMessageFactory', will instantiate immutable message ids,
+while the deprecated old one will continue to work like before.
 
 The roadmap to immutable-only message ids is proposed as follows:
 

Copied: Zope3/branches/dominik-locatableadapters/src/zope/interface/README.ru.txt (from rev 30223, Zope3/trunk/src/zope/interface/README.ru.txt)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/interface/README.ru.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/src/zope/interface/tests/test_interface.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/interface/tests/test_interface.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/interface/tests/test_interface.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -146,7 +146,7 @@
         # Make sure function attributes become tagged values.
         meth = _I1['f12']
         self.assertEqual(meth.getTaggedValue('optional'), 1)
-    
+
     def testInvariant(self):
         # set up
         o = InvariantC()
@@ -323,6 +323,11 @@
         globs={'__name__': '__main__'},
         optionflags=doctest.NORMALIZE_WHITESPACE,
         ))
+    suite.addTest(doctest.DocFileSuite(
+        '../README.ru.txt',
+        globs={'__name__': '__main__'},
+        optionflags=doctest.NORMALIZE_WHITESPACE,
+        ))
     return suite
 
 def main():

Modified: Zope3/branches/dominik-locatableadapters/src/zope/publisher/base.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/publisher/base.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/publisher/base.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -25,7 +25,7 @@
 from zope.interface.common.mapping import IReadMapping, IEnumerableMapping
 from zope.publisher.interfaces import NotFound
 
-from zope.publisher.interfaces import IPublication
+from zope.publisher.interfaces import IPublication, IHeld
 from zope.publisher.interfaces import NotFound, DebugError, Unauthorized
 from zope.publisher.interfaces import IRequest, IResponse, IDebugFlags
 from zope.publisher.publish import mapply
@@ -192,6 +192,7 @@
         '_principal',        # request principal, set by publication
         'interaction',       # interaction, set by interaction
         'debug',             # debug flags
+        'annotations',       # per-package annotations
         )
 
     environment = RequestDataProperty(RequestEnvironment)
@@ -215,6 +216,7 @@
         self._principal = None
         self.debug = DebugFlags()
         self.interaction = None
+        self.annotations = {}
 
     def setPrincipal(self, principal):
         self._principal = principal
@@ -278,6 +280,11 @@
 
     def close(self):
         'See IPublicationRequest'
+
+        for held in self._held:
+            if IHeld.providedBy(held):
+                held.release()
+        
         self._held = None
         self._response = None
         self._body_instream = None

Modified: Zope3/branches/dominik-locatableadapters/src/zope/publisher/interfaces/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/publisher/interfaces/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/publisher/interfaces/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -305,8 +305,12 @@
         """Release resources held by the request.
         """
 
-    def hold(object):
-        """Hold a reference to an object until the request is closed
+    def hold(held):
+        """Hold a reference to an object until the request is closed.
+
+        The object should be an IHeld.  If it is an IHeld, it's
+        release method will be called when it is released.
+        
         """
 
     def getTraversalStack():
@@ -332,7 +336,18 @@
         It should be IPrincipal wrapped in it's AuthenticationService's context.
         """
 
+class IHeld(Interface):
+    """Object to be held and explicitly released by a request
+    """
 
+    def release():
+        """Release the held object
+
+        This is called by a request that holds the IHeld when the
+        request is closed
+
+        """
+
 class IPublisherRequest(IPublicationRequest):
     """Request interface use by the publisher
 
@@ -421,7 +436,21 @@
         This is a read-only mapping from variable name to value.
         """)
 
+    annotations = Attribute(
+        """Stores arbitrary application data under package-unique keys.
 
+        By "package-unique keys", we mean keys that are are unique by
+        virtue of including the dotted name of a package as a prefex.  A
+        package name is used to limit the authority for picking names for
+        a package to the people using that package.
+    
+        For example, when implementing annotations for hypothetical
+        request-persistent adapters in a hypothetical zope.persistentadapter
+        package, the key would be (or at least begin with) the following::
+    
+          "zope.persistentadapter"
+        """)
+
 class IResponse(IPublisherResponse, IApplicationResponse):
     """The basic response contract
     """

Modified: Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/basetestipublicationrequest.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/basetestipublicationrequest.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/basetestipublicationrequest.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -17,12 +17,20 @@
 """
 import sys
 
-from zope.interface import Interface, directlyProvides
+from zope.interface import Interface, directlyProvides, implements
 from zope.interface.verify import verifyObject
-from zope.publisher.interfaces import IPublicationRequest
+from zope.publisher.interfaces import IPublicationRequest, IHeld
 from zope.publisher.interfaces.browser import ISkin
 
+class Held:
+    implements(IHeld)
+    
+    released = False
 
+    def release(self):
+        self.released = True
+
+
 class BaseTestIPublicationRequest(object):
     def testVerifyIPublicationRequest(self):
         verifyObject(IPublicationRequest, self._Test__new())
@@ -48,11 +56,20 @@
 
         request.hold(resource)
 
+        resource2 = Held()
+        rcresource2 = sys.getrefcount(resource2)
+        request.hold(resource2)
+
         self.failUnless(sys.getrefcount(resource) > rcresource)
+        self.failUnless(sys.getrefcount(resource2) > rcresource2)
+        self.failIf(resource2.released)
 
         request.close()
+
+        self.failUnless(resource2.released)
         self.failUnless(sys.getrefcount(response) < rcresponse)
         self.assertEqual(sys.getrefcount(resource), rcresource)
+        self.assertEqual(sys.getrefcount(resource2), rcresource2)
 
     def testSkinManagement(self):
         request = self._Test__new()

Modified: Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/test_baserequest.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/test_baserequest.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/publisher/tests/test_baserequest.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -74,6 +74,8 @@
     def test_IPublisherRequest_processInputs(self):
         self._Test__new().processInputs()
 
+    def test_AnnotationsExist(self):
+        self.assertEqual(self._Test__new().annotations, {})
 
     # Needed by BaseTestIEnumerableMapping tests:
     def _IEnumerableMapping__stateDict(self):

Modified: Zope3/branches/dominik-locatableadapters/src/zope/publisher/xmlrpc.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/publisher/xmlrpc.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/publisher/xmlrpc.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -202,7 +202,7 @@
 
       >>> sample = {'foo': (1, ['x', 'y', 1.2])}
 
-    if we put the sample in a security procy:
+    if we put the sample in a security proxy:
 
       >>> from zope.security.checker import ProxyFactory
       >>> proxied_sample = ProxyFactory(sample)

Modified: Zope3/branches/dominik-locatableadapters/src/zope/security/DEPENDENCIES.cfg
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/security/DEPENDENCIES.cfg	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/security/DEPENDENCIES.cfg	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,3 +1,4 @@
+RestrictedPython
 zope.exceptions
 zope.interface
 zope.proxy

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/dummyengine.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/dummyengine.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/dummyengine.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -21,7 +21,7 @@
 from zope.tal.taldefs import NAME_RE, TALExpressionError, ErrorInfo
 from zope.tal.interfaces import ITALExpressionCompiler, ITALExpressionEngine
 from zope.i18n.interfaces import ITranslationDomain
-from zope.i18nmessageid import MessageID
+from zope.i18nmessageid import MessageID, Message
 
 Default = object()
 
@@ -137,7 +137,7 @@
 
     def evaluateText(self, expr):
         text = self.evaluate(expr)
-        if isinstance(text, (str, unicode, MessageID)):
+        if isinstance(text, (str, unicode, MessageID, Message)):
             return text
         if text is not None and text is not Default:
             text = str(text)
@@ -280,10 +280,12 @@
         # by calling that method.
 
         # MessageID attributes override arguments
-        if isinstance(msgid, MessageID):
+        if isinstance(msgid, (MessageID, Message)):
             domain = msgid.domain
             mapping = msgid.mapping
             default = msgid.default
+            if default is None: # Message doesn't substitute itself for
+                default = msgid # missing default
 
         # simulate an unknown msgid by returning None
         if msgid == "don't translate me":

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/htmltalparser.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/htmltalparser.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/htmltalparser.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -23,28 +23,29 @@
 from zope.tal.talgenerator import TALGenerator
 
 
-BOOLEAN_HTML_ATTRS = [
+# TODO: In Python 2.4 we can use frozenset() instead of dict.fromkeys()
+BOOLEAN_HTML_ATTRS = dict.fromkeys([
     # List of Boolean attributes in HTML that may be given in
     # minimized form (e.g. <img ismap> rather than <img ismap="">)
     # From http://www.w3.org/TR/xhtml1/#guidelines (C.10)
     "compact", "nowrap", "ismap", "declare", "noshade", "checked",
     "disabled", "readonly", "multiple", "selected", "noresize",
     "defer"
-    ]
+    ])
 
-EMPTY_HTML_TAGS = [
+EMPTY_HTML_TAGS = dict.fromkeys([
     # List of HTML tags with an empty content model; these are
     # rendered in minimized form, e.g. <img />.
     # From http://www.w3.org/TR/xhtml1/#dtds
     "base", "meta", "link", "hr", "br", "param", "img", "area",
     "input", "col", "basefont", "isindex", "frame",
-    ]
+    ])
 
-PARA_LEVEL_HTML_TAGS = [
+PARA_LEVEL_HTML_TAGS = dict.fromkeys([
     # List of HTML elements that close open paragraph-level elements
     # and are themselves paragraph-level.
     "h1", "h2", "h3", "h4", "h5", "h6", "p",
-    ]
+    ])
 
 BLOCK_CLOSING_TAG_MAP = {
     "tr": ("tr", "td", "th"),
@@ -55,16 +56,19 @@
     "dt": ("dd", "dt"),
     }
 
-BLOCK_LEVEL_HTML_TAGS = [
+BLOCK_LEVEL_HTML_TAGS = dict.fromkeys([
     # List of HTML tags that denote larger sections than paragraphs.
     "blockquote", "table", "tr", "th", "td", "thead", "tfoot", "tbody",
     "noframe", "ul", "ol", "li", "dl", "dt", "dd", "div",
-    ]
+    ])
 
-TIGHTEN_IMPLICIT_CLOSE_TAGS = (PARA_LEVEL_HTML_TAGS
-                               + BLOCK_CLOSING_TAG_MAP.keys())
+SECTION_LEVEL_HTML_TAGS = PARA_LEVEL_HTML_TAGS.copy()
+SECTION_LEVEL_HTML_TAGS.update(BLOCK_LEVEL_HTML_TAGS)
 
+TIGHTEN_IMPLICIT_CLOSE_TAGS = PARA_LEVEL_HTML_TAGS.copy()
+TIGHTEN_IMPLICIT_CLOSE_TAGS.update(BLOCK_CLOSING_TAG_MAP)
 
+
 class NestingError(HTMLParseError):
     """Exception raised when elements aren't properly nested."""
 
@@ -199,7 +203,7 @@
                         close_to = i
                 elif t in BLOCK_LEVEL_HTML_TAGS:
                     close_to = -1
-        elif tag in PARA_LEVEL_HTML_TAGS + BLOCK_LEVEL_HTML_TAGS:
+        elif tag in SECTION_LEVEL_HTML_TAGS:
             i = len(self.tagstack) - 1
             while i >= 0:
                 closetag = self.tagstack[i]

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/taldefs.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/taldefs.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/taldefs.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -19,6 +19,7 @@
 from zope.tal.interfaces import ITALExpressionErrorInfo
 from zope.interface import implements
 
+
 TAL_VERSION = "1.5.1"
 
 XML_NS = "http://www.w3.org/XML/1998/namespace" # URI for XML namespace
@@ -32,14 +33,15 @@
 # zope.i18n.simpletranslationservice module:
 NAME_RE = "[a-zA-Z_][-a-zA-Z0-9_]*"
 
-KNOWN_METAL_ATTRIBUTES = [
+# TODO: In Python 2.4 we can use frozenset() instead of dict.fromkeys()
+KNOWN_METAL_ATTRIBUTES = dict.fromkeys([
     "define-macro",
     "use-macro",
     "define-slot",
     "fill-slot",
-    ]
+    ])
 
-KNOWN_TAL_ATTRIBUTES = [
+KNOWN_TAL_ATTRIBUTES = dict.fromkeys([
     "define",
     "condition",
     "content",
@@ -51,9 +53,9 @@
     "script",
     "tal tag",      # a pseudo attribute that holds the namespace of elements
                     # like <tal:x>, <metal:y>, <i18n:z>
-    ]
+    ])
 
-KNOWN_I18N_ATTRIBUTES = [
+KNOWN_I18N_ATTRIBUTES = dict.fromkeys([
     "translate",
     "domain",
     "target",
@@ -61,7 +63,7 @@
     "attributes",
     "data",
     "name",
-    ]
+    ])
 
 class TALError(Exception):
 
@@ -117,20 +119,20 @@
     for part in splitParts(arg):
         m = _attr_re.match(part)
         if not m:
-            raise TALError("Bad syntax in attributes: " + `part`)
-        name, expr = m.group(1, 2)
+            raise TALError("Bad syntax in attributes: %r" % part)
+        name, expr = m.groups()
         if not xml:
             name = name.lower()
-        if dict.has_key(name):
-            raise TALError("Duplicate attribute name in attributes: " + `part`)
+        if name in dict:
+            raise TALError("Duplicate attribute name in attributes: %r" % part)
         dict[name] = expr
     return dict
 
 def parseSubstitution(arg, position=(None, None)):
     m = _subst_re.match(arg)
     if not m:
-        raise TALError("Bad syntax in substitution text: " + `arg`, position)
-    key, expr = m.group(1, 2)
+        raise TALError("Bad syntax in substitution text: %r" % arg, position)
+    key, expr = m.groups()
     if not key:
         key = "text"
     return key, expr
@@ -155,8 +157,8 @@
         return type in ob.__class__.__mro__
     except AttributeError:
         return False
-            
 
+
 def getProgramMode(program):
     version = getProgramVersion(program)
     if (version == TAL_VERSION and isinstance_(program[1], tuple) and

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/talgenerator.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/talgenerator.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/talgenerator.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -323,18 +323,7 @@
         self.emit('evaluateCode', lang, program)
 
     def emitI18nVariable(self, stuff):
-        # Used for i18n:name attributes.  arg is extra information describing
-        # how the contents of the variable should get filled in, and it will
-        # either be a 1-tuple or a 2-tuple.  If arg[0] is None, then the
-        # i18n:name value is taken implicitly from the contents of the tag,
-        # e.g. "I live in <span i18n:name="country">the USA</span>".  In this
-        # case, arg[1] is the opcode sub-program describing the contents of
-        # the tag.
-        #
-        # When arg[0] is not None, it contains the tal expression used to
-        # calculate the contents of the variable, e.g.
-        # "I live in <span i18n:name="country"
-        #                  tal:replace="here/countryOfOrigin" />"
+        # Used for i18n:name attributes.
         varname, action, expression = stuff
         m = _name_rx.match(varname)
         if m is None or m.group() != varname:

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/talinterpreter.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/talinterpreter.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/talinterpreter.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -21,14 +21,16 @@
 # Do not use cStringIO here!  It's not unicode aware. :(
 from StringIO import StringIO
 
-from zope.i18nmessageid import MessageID
+from zope.i18nmessageid import MessageID, Message
 from zope.tal.taldefs import quote, TAL_VERSION, METALError
 from zope.tal.taldefs import isCurrentVersion
 from zope.tal.taldefs import getProgramVersion, getProgramMode
 from zope.tal.talgenerator import TALGenerator
 from zope.tal.translationcontext import TranslationContext
 
-BOOLEAN_HTML_ATTRS = [
+
+# TODO: In Python 2.4 we can use frozenset() instead of dict.fromkeys()
+BOOLEAN_HTML_ATTRS = dict.fromkeys([
     # List of Boolean attributes in HTML that should be rendered in
     # minimized form (e.g. <img ismap> rather than <img ismap="">)
     # From http://www.w3.org/TR/xhtml1/#guidelines (C.10)
@@ -37,16 +39,8 @@
     "compact", "nowrap", "ismap", "declare", "noshade", "checked",
     "disabled", "readonly", "multiple", "selected", "noresize",
     "defer"
-]
+])
 
-def _init():
-    d = {}
-    for s in BOOLEAN_HTML_ATTRS:
-        d[s] = 1
-    return d
-
-BOOLEAN_HTML_ATTRS = _init()
-
 _nulljoin = ''.join
 _spacejoin = ' '.join
 
@@ -354,6 +348,7 @@
         # for start tags with no attributes; those are optimized down
         # to rawtext events.  Hence, there is no special "fast path"
         # for that case.
+        self._currentTag = name
         L = ["<", name]
         append = L.append
         col = self.col + _len(name) + 1
@@ -579,7 +574,7 @@
         if text is self.Default:
             self.interpret(stuff[1])
             return
-        if isinstance(text, MessageID):
+        if isinstance(text, (MessageID, Message)):
             # Translate this now.
             text = self.engine.translate(text)
         # '&' must be done first!
@@ -618,7 +613,7 @@
                 value = self.engine.evaluate(expression)
 
             # evaluate() does not do any I18n, so we do it here.
-            if isinstance(value, MessageID):
+            if isinstance(value, (MessageID, Message)):
                 # Translate this now.
                 value = self.engine.translate(value)
 
@@ -661,8 +656,11 @@
         # message id.  All other useful information will be in the i18ndict on
         # the top of the i18nStack.
         default = tmpstream.getvalue()
-        if msgid == '':
-            msgid = normalize(default)
+        if not msgid:
+            if self.html and self._currentTag == "pre":
+                msgid = default
+            else:
+                msgid = normalize(default)
         self.i18nStack.pop()
         # See if there is was an i18n:data for msgid
         if len(stuff) > 2:


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/markbench.py
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/run.py
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_sourcepos.py
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talgettext.py
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talinterpreter.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talinterpreter.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talinterpreter.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -24,10 +24,11 @@
 
 from zope.tal.taldefs import METALError, I18NError, TAL_VERSION
 from zope.tal.htmltalparser import HTMLTALParser
+from zope.tal.talparser import TALParser
 from zope.tal.talinterpreter import TALInterpreter
 from zope.tal.dummyengine import DummyEngine, DummyTranslationDomain
 from zope.tal.tests import utils
-from zope.i18nmessageid import MessageID
+from zope.i18nmessageid import MessageID, Message
 
 class TestCaseBase(unittest.TestCase):
 
@@ -145,11 +146,13 @@
         self.assertEqual(actual, expected)
 
 
-class I18NCornerTestCase(TestCaseBase):
+class I18NCornerTestCaseBase(TestCaseBase):
 
+    factory = None # set in subclass to Message and MessageID
+
     def setUp(self):
         self.engine = DummyEngine()
-        self.engine.setLocal('foo', MessageID('FoOvAlUe', 'default'))
+        self.engine.setLocal('foo', self.factory('FoOvAlUe', 'default'))
         self.engine.setLocal('bar', 'BaRvAlUe')
 
     def _check(self, program, expected):
@@ -258,8 +261,7 @@
         self._check(program,
                     '<div>THIS IS TEXT FOR <span>BARVALUE</span>.</div>\n')
 
-    def test_for_correct_msgids(self):
-
+    def _getCollectingTranslationDomain(self):
         class CollectingTranslationDomain(DummyTranslationDomain):
             data = []
 
@@ -272,6 +274,10 @@
 
         xlatdmn = CollectingTranslationDomain()
         self.engine.translationDomain = xlatdmn
+        return xlatdmn
+
+    def test_for_correct_msgids(self):
+        xlatdmn = self._getCollectingTranslationDomain()
         result = StringIO()
         program, macros = self._compile(
             '<div i18n:translate="">This is text for '
@@ -287,6 +293,48 @@
             '<div>THIS IS TEXT FOR <span>BARVALUE</span>.</div>\n',
             result.getvalue())
 
+    def test_for_raw_msgids(self):
+        # Test for Issue 314: i18n:translate removes line breaks from
+        # <pre>...</pre> contents
+        # HTML mode
+        xlatdmn = self._getCollectingTranslationDomain()
+        result = StringIO()
+        program, macros = self._compile(
+            '<div i18n:translate=""> This is text\n'
+            ' \tfor\n div. </div>'
+            '<pre i18n:translate=""> This is text\n'
+            ' <b>\tfor</b>\n pre. </pre>')
+        self.interpreter = TALInterpreter(program, {}, self.engine,
+                                          stream=result)
+        self.interpreter()
+        self.assert_('This is text for div.' in xlatdmn.data)
+        self.assert_(' This is text\n <b>\tfor</b>\n pre. ' in
+                     xlatdmn.data)
+        self.assertEqual(
+            '<div>THIS IS TEXT FOR DIV.</div>'
+            '<pre> THIS IS TEXT\n <B>\tFOR</B>\n PRE. </pre>\n',
+            result.getvalue())
+
+        # XML mode
+        xlatdmn = self._getCollectingTranslationDomain()
+        result = StringIO()
+        parser = TALParser()
+        parser.parseString(
+            '<?xml version="1.0"?>\n'
+            '<pre xmlns:i18n="http://xml.zope.org/namespaces/i18n"'
+            ' i18n:translate=""> This is text\n'
+            ' <b>\tfor</b>\n barvalue. </pre>')
+        program, macros = parser.getCode()
+        self.interpreter = TALInterpreter(program, {}, self.engine,
+                                          stream=result)
+        self.interpreter()
+        self.assert_('This is text <b> for</b> barvalue.' in
+                     xlatdmn.data)
+        self.assertEqual(
+            '<?xml version="1.0"?>\n'
+            '<pre>THIS IS TEXT <B> FOR</B> BARVALUE.</pre>\n',
+            result.getvalue())
+
     def test_for_handling_unicode_vars(self):
         # Make sure that non-ASCII Unicode is substituted correctly.
         # http://collector.zope.org/Zope3-dev/264
@@ -295,7 +343,12 @@
             "Foo <span tal:replace='bar' i18n:name='bar' /></div>")
         self._check(program, u"<div>FOO \u00C0</div>\n")
 
+class I18NCornerTestCaseMessageID(I18NCornerTestCaseBase):
+    factory = MessageID
 
+class I18NCornerTestCaseMessage(I18NCornerTestCaseBase):
+    factory = Message
+
 class ScriptTestCase(TestCaseBase):
 
     def setUp(self):
@@ -515,7 +568,8 @@
     suite.addTest(unittest.makeSuite(MacroExtendTestCase))
     suite.addTest(unittest.makeSuite(OutputPresentationTestCase))
     suite.addTest(unittest.makeSuite(ScriptTestCase))
-    suite.addTest(unittest.makeSuite(I18NCornerTestCase))
+    suite.addTest(unittest.makeSuite(I18NCornerTestCaseMessageID))
+    suite.addTest(unittest.makeSuite(I18NCornerTestCaseMessage))
     suite.addTest(unittest.makeSuite(TestSourceAnnotations))
 
     # TODO: Deactivated test, since we have not found a solution for this and


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_talparser.py
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/test_xmlparser.py
___________________________________________________________________
Name: svn:keywords
   + Id


Property changes on: Zope3/branches/dominik-locatableadapters/src/zope/tal/tests/utils.py
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/CHANGES.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/CHANGES.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/CHANGES.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,6 +1,9 @@
 CHANGES
 
+  Version 0.2.5
 
+    - Added translations.
+
   Version 0.2
 
     - Moved from zope.app.wiki to wiki. 
@@ -18,4 +21,4 @@
 
   Version 0.0.1
 
-    - Initial version of Zope3 Wiki
\ No newline at end of file
+    - Initial version of Zope3 Wiki

Copied: Zope3/branches/dominik-locatableadapters/src/zwiki/I18N.txt (from rev 30223, Zope3/trunk/src/zwiki/I18N.txt)

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/VERSION.txt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/VERSION.txt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/VERSION.txt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1 +1 @@
-Zope3 Wiki 0.2.0
\ No newline at end of file
+Zope3 Wiki 0.2.5

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/__init__.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/__init__.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/__init__.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -16,3 +16,5 @@
 $Id$
 """
 
+from zope.i18nmessageid import MessageIDFactory
+ZWikiMessageID = MessageIDFactory("zwiki")

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/add.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/add.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/add.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/dialog">
+<html metal:use-macro="views/standard_macros/dialog"
+    i18n:domain="zwiki">
 <body>
 
 <div metal:fill-slot="body">

Copied: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/browser.txt (from rev 30223, Zope3/trunk/src/zwiki/browser/browser.txt)

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,7 +1,7 @@
 <configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser"
-   i18n_domain="zope">
+   i18n_domain="zwiki">
 
   <include package=".skin" />
 

Copied: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/ftests.py (from rev 30223, Zope3/trunk/src/zwiki/browser/ftests.py)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/ftests.py
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/parents_page.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/parents_page.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/parents_page.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,7 +1,7 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
     xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="zope"
+    i18n_domain="zwiki"
     >
 <browser:layer name="wiki" />
 <browser:skin name="wiki" layers="wiki zope.app.rotterdam.rotterdam default" />

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/dialog_macros.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/dialog_macros.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/dialog_macros.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,7 +4,8 @@
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   </metal:block>
 
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+    i18n:domain="zwiki">
 
   <head>
     <title metal:define-slot="title">ZWiki for Zope 3</title>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/template.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/template.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/skin/template.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -4,7 +4,8 @@
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   </metal:block>
 
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+    i18n:domain="zwiki">
 
   <head>
     <title metal:define-slot="title">ZWiki for Zope 3</title>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/subscriptions.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/subscriptions.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/subscriptions.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/view_page.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/view_page.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/view_page.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>
@@ -14,16 +15,16 @@
            tal:condition="comments">
 
         <hr size="1" width="100%" noshade="" />
-        
+
         <div tal:repeat="info comments" style="padding-bottom: 1em;">
           <h4 tal:content="info/title">Title</h4>
-          <i>
-            Posted by <span tal:replace="info/author" />
-            on <span tal:replace="info/modified" />.
+          <i i18n:translate="">
+            Posted by <span tal:replace="info/author" i18n:name="user" />
+            on <span tal:replace="info/modified" i18n:name="date" />
           </i>
           <div tal:replace="structure info/text" />
         </div>
-      
+
       </div>
 
     </div>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_add.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_add.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_add.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/page">
+<html metal:use-macro="views/standard_macros/page"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_search.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_search.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_search.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_toc.pt
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_toc.pt	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wiki_toc.pt	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,4 +1,5 @@
-<html metal:use-macro="views/standard_macros/view">
+<html metal:use-macro="views/standard_macros/view"
+    i18n:domain="zwiki">
   <head>
     <style metal:fill-slot="style_slot">
     </style>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wikipage.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wikipage.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/browser/wikipage.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -16,36 +16,38 @@
 $Id$
 """
 import re
-from urllib import quote, unquote
-from datetime import datetime
+from urllib import quote
 
 from zope.proxy import removeAllProxies
-from zope.app.publisher.browser import BrowserView 
+from zope.app.publisher.browser import BrowserView
 
 from zope.app import zapi
 from zope.app.form.browser.submit import Update
 from zope.app.dublincore.interfaces import ICMFDublinCore
-from zope.app.traversing.api import getParent, getPath, getName
+from zope.app.traversing.api import getParent, getName
 
 from zwiki.interfaces import IWikiPageHierarchy, IMailSubscriptions
 
 urlchars = r'[A-Za-z0-9/:@_%~#=&\.\-\?\+\$,]+'
 urlendchar  = r'[A-Za-z0-9/]'
-url = r'["=]?((about|gopher|http|https|ftp|mailto|file):%s)' %urlchars
+url_re = r'["=]?((about|gopher|http|https|ftp|mailto|file):%s)' % urlchars
+url = re.compile(url_re)
 
-bracketedexpr = r'\[([^\n\]]+)\]'
+bracketedexpr_re = r'\[([^\n\]]+)\]'
+bracketedexpr = re.compile(bracketedexpr_re)
 
-protectedLine = r'(?m)^!(.*)$'
+protectedLine = re.compile(r'(?m)^!(.*)$')
 
 U = 'A-Z\xc0-\xdf'
 L = 'a-z\xe0-\xff'
-b = '(?<![%s0-9])' % (U+L)
-wikiname1 = r'(?L)%s[%s]+[%s]+[%s][%s]*[0-9]*' % (b,U,L,U,U+L)
-wikiname2 = r'(?L)%s[%s][%s]+[%s][%s]*[0-9]*'  % (b,U,U,L,U+L)
-wikilink  = r'!?(%s|%s|%s|%s)' % (wikiname1,wikiname2,bracketedexpr,url)
-localwikilink = r'!?(%s|%s|%s)' % (wikiname1, wikiname2, bracketedexpr)
-interwikilink = r'!?((?P<local>%s):(?P<remote>%s))' % \
-                (localwikilink, urlchars+urlendchar)
+b = '(?<![%s0-9])' % (U + L)
+wikiname1 = r'(?L)%s[%s]+[%s]+[%s][%s]*[0-9]*' % (b, U, L, U, U + L)
+wikiname2 = r'(?L)%s[%s][%s]+[%s][%s]*[0-9]*'  % (b, U, U, L, U + L)
+wikilink  = re.compile(r'!?(%s|%s|%s|%s)' %
+            (wikiname1, wikiname2, bracketedexpr_re, url_re))
+localwikilink = r'!?(%s|%s|%s)' % (wikiname1, wikiname2, bracketedexpr_re)
+interwikilink = re.compile(r'!?((?P<local>%s):(?P<remote>%s))' %
+                (localwikilink, urlchars + urlendchar))
 
 
 class DublinCoreViews(BrowserView):
@@ -70,7 +72,7 @@
 
 class GenericWikiPageViews(DublinCoreViews):
     """Some generic Wiki page views."""
-    
+
     def breadcrumbs(self):
         """Get the path of this page."""
         hier = IWikiPageHierarchy(self.context)
@@ -111,16 +113,14 @@
         return status
 
 
-class ViewWikiPage:
+class ViewWikiPage(object):
     """A rendered View of the wiki page."""
 
-    def renderWikiLinks(self, source):
+    def renderWikiLinks(self, html):
         """Add Wiki Links to the source"""
-
-        html = str(source)
-        html = re.sub(protectedLine, self._protectLine, html)
-        html = re.sub(interwikilink, self._interwikilinkReplace, html)
-        html = re.sub(wikilink, self._wikilinkReplace, html)
+        html = protectedLine.sub(self._protectLine, html)
+        html = interwikilink.sub(self._interwikilinkReplace, html)
+        html = wikilink.sub(self._wikilinkReplace, html)
         return html
 
     def render(self):
@@ -149,7 +149,7 @@
         return result
 
     def _protectLine(self, match):
-        return re.sub(wikilink, r'!\1', match.group(1))
+        return wikilink.sub(r'!\1', match.group(1))
 
     def _wikilinkReplace(self, match, allowed=0, state=None, text=''):
         # tasty spaghetti regexps! better suggestions welcome ?
@@ -174,10 +174,10 @@
         wiki = getParent(self.context)
 
         # if it's a bracketed expression,
-        if re.match(bracketedexpr, m):
+        if bracketedexpr.match(m):
 
             # strip the enclosing []'s
-            m = re.sub(bracketedexpr, r'\1', m)
+            m = bracketedexpr.sub(r'\1', m)
 
             # extract a (non-url) path if there is one
             pathmatch = re.match(r'(([^/]*/)+)([^/]+)', m)
@@ -196,7 +196,7 @@
             # otherwise fall through to normal link processing
 
         # if it's an ordinary url, link to it
-        if re.match(url,m):
+        if url.match(m):
             # except, if preceded by " or = it should probably be left alone
             if re.match('^["=]', m):     # "
                 return m
@@ -235,8 +235,8 @@
         remotename = match.group('remote') # named groups come in handy here!
 
         # NB localname could be [bracketed]
-        if re.match(bracketedexpr,localname):
-            localname = re.sub(bracketedexpr, r'\1', localname)
+        if bracketedexpr.match(localname):
+            localname = bracketedexpr.sub(r'\1', localname)
 
         # look for a RemoteWikiURL definition
         if hasattr(getParent(self.context), localname):
@@ -250,13 +250,13 @@
                 link = '<a href="%s%s">%s:%s</a>' % \
                        (remoteurl, remotename, localname, remotename)
                 # protect it from any later wiki-izing passes
-                return re.sub(wikilink, r'!\1', link)
+                return wikilink.sub(r'!\1', link)
 
         # otherwise, leave alone
         return match.group(0)
 
 
-class EditWikiParents:
+class EditWikiParents(object):
 
     def parents(self):
         hier = IWikiPageHierarchy(self.context)
@@ -293,7 +293,7 @@
         return '../'
 
 
-class MailSubscriptions:
+class MailSubscriptions(object):
 
     def subscriptions(self):
         return IMailSubscriptions(self.context).getSubscriptions()


Property changes on: Zope3/branches/dominik-locatableadapters/src/zwiki/comment.py
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/configure.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/configure.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/configure.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,9 +1,10 @@
 <configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:mail="http://namespaces.zope.org/mail"
+   xmlns:i18n="http://namespaces.zope.org/i18n"
    xmlns:apidoc="http://namespaces.zope.org/apidoc"
    xmlns:zcml="http://namespaces.zope.org/zcml"
-   i18n_domain="zope"
+   i18n_domain="zwiki"
    >
 
   <!-- Backward compatibility -->
@@ -122,7 +123,7 @@
   <adapter
       factory=".wikipage.MailSubscriptions"
       provides=".interfaces.IMailSubscriptions"
-      for=".interfaces.IWiki" 
+      for=".interfaces.IWiki"
       trusted="true"
       />
 
@@ -140,7 +141,7 @@
 
   <!-- Wiki Page Content Type -->
 
-  <interface 
+  <interface
       interface=".interfaces.IWikiPage" 
       type="zope.app.content.interfaces.IContentType"
       /> 
@@ -187,7 +188,7 @@
   <interface 
       interface=".interfaces.IComment" 
       type="zope.app.content.interfaces.IContentType"
-      /> 
+      />
 
   <content class=".comment.Comment">
 
@@ -205,16 +206,16 @@
         permission="zwiki.CommentWikiPage"
         set_schema=".interfaces.IComment" />
 
-  </content>  
+  </content>
 
-  <adapter 
+  <adapter
      for=".interfaces.IComment"
      provides="zope.app.filerepresentation.interfaces.IReadFile"
      factory=".comment.CommentFile"
      permission="zwiki.ViewWikiPage"
      />
 
-  <adapter 
+  <adapter
      for=".interfaces.IComment"
      provides="zope.app.filerepresentation.interfaces.IWriteFile"
      factory=".comment.CommentFile"
@@ -226,20 +227,20 @@
   <adapter
       factory=".wikipage.MailSubscriptions"
       provides=".interfaces.IMailSubscriptions"
-      for=".interfaces.IWikiPage" 
+      for=".interfaces.IWikiPage"
       trusted="true"
       />
 
-  <adapter 
+  <adapter
       factory=".traversal.WikiPageTraversable"
       provides="zope.app.traversing.interfaces.ITraversable"
-      for=".interfaces.IWikiPage" 
+      for=".interfaces.IWikiPage"
       trusted="true"
       />
 
 
   <!-- WikiPage FTP configurations -->
-  <adapter 
+  <adapter
      for=".interfaces.IWikiPage"
      provides="zope.app.filerepresentation.interfaces.IReadDirectory"
      factory=".wikipage.Directory"
@@ -262,7 +263,7 @@
 
   <!-- Register mail delivery for change mails -->
   <mail:smtpMailer name="wiki-smtp" hostname="localhost" port="25" />
-  
+
   <mail:queuedDelivery 
       name="wiki-delivery"
       permission="zope.SendMail"
@@ -290,4 +291,7 @@
   <!-- Register application with API Doc Tool -->
   <apidoc:rootModule module="zwiki" zcml:condition="have apidoc" />
 
+  <!-- Translations -->
+  <i18n:registerTranslations directory="locales" />
+
 </configure>

Modified: Zope3/branches/dominik-locatableadapters/src/zwiki/interfaces.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/src/zwiki/interfaces.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/src/zwiki/interfaces.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -26,8 +26,9 @@
 from zope.app.container.constraints import ContainerTypesConstraint
 from zope.app.container.constraints import ItemTypePrecondition
 from zope.app.event.interfaces import IObjectEvent
-from zope.app.i18n import ZopeMessageIDFactory as _ 
 
+from zwiki import ZWikiMessageID as _ 
+
 class IComment(Interface):
     """A simple Wiki Page comment.
 

Copied: Zope3/branches/dominik-locatableadapters/src/zwiki/locales (from rev 30223, Zope3/trunk/src/zwiki/locales)


Property changes on: Zope3/branches/dominik-locatableadapters/src/zwiki/tests/test_docstrings.py
___________________________________________________________________
Name: svn:keywords
   + Id

Deleted: Zope3/branches/dominik-locatableadapters/utilities/unittestgui.py
===================================================================
--- Zope3/branches/dominik-locatableadapters/utilities/unittestgui.py	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/utilities/unittestgui.py	2005-05-02 07:44:19 UTC (rev 30224)
@@ -1,650 +0,0 @@
-#!/usr/bin/env python
-##############################################################################
-#
-# Copyright (c) 2001, 2002 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.
-#
-##############################################################################
-"""
-GUI framework and application for use with Python unit testing framework.
-Execute tests written using the framework provided by the 'unittest' module.
-
-Further information is available in the bundled documentation, and from
-
-  http://pyunit.sourceforge.net/
-
-Copyright (c) 1999, 2000, 2001 Steve Purcell
-This module is free software, and you may redistribute it and/or modify
-it under the same terms as Python itself, so long as this copyright message
-and disclaimer are retained in their original form.
-
-IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-"""
-
-__author__ = "Steve Purcell (stephen_purcell at yahoo.com)"
-__version__ = "$Rev$"[6:-2]
-
-import linecache
-import unittest
-import ScrolledText
-import sys
-import Tkinter
-import tkMessageBox
-import traceback
-
-import string
-import re
-import os
-tk = Tkinter # Alternative to the messy 'from Tkinter import *' often seen
-
-
-##############################################################################
-# GUI framework classes
-##############################################################################
-
-class BaseGUITestRunner:
-    """Subclass this class to create a GUI TestRunner that uses a specific
-    windowing toolkit. The class takes care of running tests in the correct
-    manner, and making callbacks to the derived class to obtain information
-    or signal that events have occurred.
-    """
-    def __init__(self, *args, **kwargs):
-        self.currentResult = None
-        self.totalTests = 0
-        self.running = 0
-        self.__rollbackImporter = None
-        apply(self.initGUI, args, kwargs)
-
-    def getSelectedTestName(self):
-        "Override to return the name of the test selected to be run"
-        pass
-
-    def errorDialog(self, title, message):
-        "Override to display an error arising from GUI usage"
-        pass
-
-    def runClicked(self, COMMA_SPACE=re.compile('[, ]+')):
-        "To be called in response to user choosing to run a test"
-        if self.running: return
-        testName = self.getSelectedTestName()
-        if not testName:
-            self.errorDialog("Test name entry", "You must enter a test name")
-            return
-        if self.__rollbackImporter:
-            self.__rollbackImporter.rollbackImports()
-        self.__rollbackImporter = RollbackImporter()
-        self.notifyStartImport()
-        try:
-            test = unittest.defaultTestLoader.loadTestsFromNames(
-                COMMA_SPACE.split(testName))
-            warnings = getattr(test, 'warnings', [])
-            for sub_test in test._tests:
-                warnings.extend(getattr(sub_test, 'warnings', []))
-            test.warnings = warnings
-        except:
-            exc_type, exc_value, exc_tb = sys.exc_info()
-            apply(traceback.print_exception,sys.exc_info())
-            self.errorDialog("Unable to run test '%s'" % testName,
-                             "Error loading specified test: %s, %s" % \
-                             (exc_type, exc_value))
-            return
-        self.currentResult = GUITestResult(self)
-        self.totalTests = test.countTestCases()
-        self.running = 1
-        self.notifyRunning()
-        warnings = getattr(test, 'warnings', ())
-        for warning in warnings:
-            self.notifyWarning(warning[0], warning[1])
-        test.run(self.currentResult)
-        self.running = 0
-        self.notifyStopped()
-
-    def stopClicked(self):
-        "To be called in response to user stopping the running of a test"
-        if self.currentResult:
-            self.currentResult.stop()
-
-    # Required callbacks
-
-    def notifyStartImport(self):
-        "Override to display a message that imports are about to start"
-        pass
-
-    def notifyRunning(self):
-        "Override to set GUI in 'running' mode, enabling 'stop' button etc."
-        pass
-
-    def notifyStopped(self):
-        "Override to set GUI in 'stopped' mode, enabling 'run' button etc."
-        pass
-
-    def notifyWarning(self, msg, tb_str):
-        "Override to log a warning message (e.g., couldn't import a test)."
-
-    def notifyTestFailed(self, test, err):
-        "Override to indicate that a test has just failed"
-        pass
-
-    def notifyTestErrored(self, test, err):
-        "Override to indicate that a test has just errored"
-        pass
-
-    def notifyTestStarted(self, test):
-        "Override to indicate that a test is about to run"
-        pass
-
-    def notifyTestFinished(self, test):
-        """Override to indicate that a test has finished (it may already have
-           failed or errored)"""
-        pass
-
-
-class GUITestResult(unittest.TestResult):
-    """A TestResult that makes callbacks to its associated GUI TestRunner.
-    Used by BaseGUITestRunner. Need not be created directly.
-    """
-    def __init__(self, callback):
-        unittest.TestResult.__init__(self)
-        self.callback = callback
-
-    def addError(self, test, err):
-        unittest.TestResult.addError(self, test, err)
-        self.callback.notifyTestErrored(test, err)
-
-    def addFailure(self, test, err):
-        unittest.TestResult.addFailure(self, test, err)
-        self.callback.notifyTestFailed(test, err)
-
-    def stopTest(self, test):
-        unittest.TestResult.stopTest(self, test)
-        self.callback.notifyTestFinished(test)
-
-    def startTest(self, test):
-        unittest.TestResult.startTest(self, test)
-        self.callback.notifyTestStarted(test)
-
-
-class RollbackImporter:
-    """This tricky little class is used to make sure that modules under test
-    will be reloaded the next time they are imported.
-    """
-    def __init__(self):
-        self.previousModules = sys.modules.copy()
-
-    def rollbackImports(self):
-        for modname in sys.modules.keys():
-            if not self.previousModules.has_key(modname):
-                # Force reload when modname next imported
-                del(sys.modules[modname])
-        linecache.checkcache()
-
-
-##############################################################################
-# Tkinter GUI
-##############################################################################
-
-_ABOUT_TEXT="""\
-PyUnit unit testing framework.
-
-For more information, visit
-http://pyunit.sourceforge.net/
-
-Copyright (c) 2000 Steve Purcell
-<stephen_purcell at yahoo.com>
-"""
-_HELP_TEXT="""\
-Enter the name of a callable object which, when called, will return a \
-TestCase or TestSuite. Click 'start', and the test thus produced will be run.
-
-Double click on an error in the listbox to see more information about it,\
-including the stack trace.
-
-Double click on the progress bar has the same effect as clicking 'start'. \
-Clicking the arrow button next to the progress bar will minimize to show \
-the progress bar and arrow button *only*, making it easier to keep the \
-window around during development or refactoring. Starting the GUI with the \
--m option will open the window in minimized mode by default.
-
-For more information, visit
-http://pyunit.sourceforge.net/
-or see the bundled documentation
-"""
-
-class TkTestRunner(BaseGUITestRunner):
-    """An implementation of BaseGUITestRunner using Tkinter.
-    """
-    def initGUI(self, root, initialTestName, minimal=0):
-        """Set up the GUI inside the given root window. The test name entry
-        field will be pre-filled with the given initialTestName.
-        """
-        self.root = root
-        self.minimal = minimal
-        # Set up values that will be tied to widgets
-        self.suiteNameVar = tk.StringVar()
-        self.suiteNameVar.set(initialTestName)
-        self.statusVar = tk.StringVar()
-        self.statusVar.set("Idle")
-        self.runCountVar = tk.IntVar()
-        self.failCountVar = tk.IntVar()
-        self.errorCountVar = tk.IntVar()
-        self.remainingCountVar = tk.IntVar()
-        self.toggleVar = tk.StringVar()
-        self.toggleVar.set(minimal and '>' or '<')
-        self.root.withdraw()
-        self.createWidgets()
-        self.root.deiconify()
-
-    def createWidgets(self):
-        """Creates and packs the various widgets.
-
-        Why is it that GUI code always ends up looking a mess, despite all the
-        best intentions to keep it tidy? Answers on a postcard, please.
-        """
-
-        self.packWidgets = []
-        add = self.packWidgets.append
-
-        self.top = tk.Frame()
-        add((self.top, {'fill': tk.BOTH, 'expand': 1}, 0))
-
-        # Status bar
-        statusFrame = tk.Frame(self.top, relief=tk.SUNKEN, borderwidth=2)
-        add((statusFrame,
-             {'anchor': tk.SW, 'fill': tk.X, 'side': tk.BOTTOM}, 1))
-        add((tk.Label(statusFrame, textvariable=self.statusVar),
-             {'side': tk.LEFT}, 0))
-
-        # Area to enter name of test to run
-        leftFrame = tk.Frame(self.top, borderwidth=3)
-        add((leftFrame, {'fill': tk.BOTH, 'side': tk.LEFT, 'anchor': tk.NW,
-                         'expand': 1}, 0))
-        suiteNameFrame = tk.Frame(leftFrame, borderwidth=3)
-        add((suiteNameFrame, {'fill': tk.X}, 1))
-        add((tk.Label(suiteNameFrame, text="Enter test name:"),
-             {'side': tk.LEFT}, 0))
-        e = tk.Entry(suiteNameFrame, textvariable=self.suiteNameVar, width=80)
-        add((e, {'side': tk.LEFT, 'fill': tk.X, 'expand': 1}, 0))
-        e.focus_set()
-        e.bind('<Key-Return>', lambda e, self=self: self.runClicked())
-
-        # Progress bar
-        progressFrame = tk.Frame(leftFrame, relief=tk.GROOVE, borderwidth=2)
-        add((progressFrame, {'fill': tk.X, 'expand': 0, 'anchor': tk.NW}, 0))
-
-        add((tk.Label(progressFrame, text="Progress:"), {'anchor': tk.W}, 1))
-        tb = self.toggleButton = tk.Button(progressFrame, padx=0,
-                                           relief=tk.GROOVE,
-                                           textvariable=self.toggleVar,
-                                           command=self.toggleMinimal)
-
-        add((self.toggleButton, {'side': tk.LEFT, 'anchor': tk.NW}, 0))
-        pb = self.progressBar = ProgressBar(progressFrame, relief=tk.SUNKEN,
-                                            borderwidth=2)
-        if self.minimal:
-            pb.setProgressFraction(0.0, '0/0')
-        add((pb, {'fill': tk.X, 'expand': 1}, 0))
-        pb.bind('<Double-Button-1>', lambda e, self=self: self.runClicked())
-
-        # Area with buttons to start/stop tests and quit
-        buttonFrame = tk.Frame(self.top, borderwidth=3)
-        add((buttonFrame, {'side': tk.LEFT, 'anchor': tk.NW, 'fill': tk.Y}, 1))
-        self.stopGoButton = tk.Button(buttonFrame, text="Start",
-                                      command=self.runClicked)
-        add((self.stopGoButton, {'fill': tk.X}, 0))
-        add((tk.Button(buttonFrame, text="Close", command=self.top.quit),
-             {'side': tk.BOTTOM, 'fill': tk.X}, 0))
-        add((tk.Button(buttonFrame, text="About", command=self.showAboutDialog),
-             {'side': tk.BOTTOM, 'fill': tk.X}, 0))
-        add((tk.Button(buttonFrame, text="Help", command=self.showHelpDialog),
-             {'side': tk.BOTTOM, 'fill': tk.X}, 0))
-
-        # Area with labels reporting results
-        for label, var in (('Run:', self.runCountVar),
-                        ('Failures:', self.failCountVar),
-                        ('Errors:', self.errorCountVar),
-                        ('Remaining:', self.remainingCountVar)):
-            add((tk.Label(progressFrame, text=label), {'side': tk.LEFT}, 1))
-
-            add((tk.Label(progressFrame, textvariable=var, foreground="blue"),
-                 {'side': tk.LEFT, 'fill': tk.X, 'expand': 1, 'anchor': tk.W},
-                 1))
-
-        # List box showing errors and failures
-        add((tk.Label(leftFrame, text="Failures and errors:"),
-             {'anchor': tk.W}, 1))
-        listFrame = tk.Frame(leftFrame, relief=tk.SUNKEN, borderwidth=2)
-        add((listFrame, {'fill': tk.BOTH, 'anchor': tk.NW, 'expand': 1}, 1))
-        self.errorListbox = tk.Listbox(listFrame, foreground='red',
-                                       selectmode=tk.SINGLE,
-                                       selectborderwidth=0)
-        add((self.errorListbox, {'side': tk.LEFT, 'fill': tk.BOTH, 'expand': 1,
-                                 'anchor': tk.NW}, 0))
-        listScroll = tk.Scrollbar(listFrame, command=self.errorListbox.yview)
-        add((listScroll, {'side': tk.LEFT, 'fill': tk.Y, 'anchor': tk.N}, 0))
-        self.errorListbox.bind("<Double-1>",
-                               lambda e, self=self: self.showSelectedError())
-        self.errorListbox.configure(yscrollcommand=listScroll.set)
-
-        # List box showing warnings
-
-        add((tk.Label(leftFrame, text="Warnings:"), {'anchor': tk.W}, 1))
-        warnFrame = tk.Frame(leftFrame, relief=tk.SUNKEN, borderwidth=2)
-        add((warnFrame, {'fill': tk.BOTH, 'anchor': tk.NW, 'expand': 1}, 1))
-        self.warningListbox = tk.Listbox(warnFrame, foreground='black',
-                                       selectmode=tk.SINGLE,
-                                       selectborderwidth=0)
-        add((self.warningListbox, {'side': tk.LEFT, 'fill': tk.BOTH,
-                                   'expand': 1,
-                             'anchor': tk.NW}, 0))
-        wListScroll = tk.Scrollbar(warnFrame, command=self.warningListbox.yview)
-        add((wListScroll, {'side': tk.LEFT, 'fill': tk.Y, 'anchor': tk.N}, 0))
-        self.warningListbox.bind("<Double-1>",
-                               lambda e, self=self: self.showSelectedWarning())
-        self.warningListbox.configure(yscrollcommand=wListScroll.set)
-
-        # Necessary for certain X servers; X-Win32 in particular.
-        self.rePack(minimal=0, with_idle_wait=1)
-        self.rePack(minimal=1, with_idle_wait=1)
-        self.rePack()
-
-    def toggleMinimal(self):
-        minimal = self.minimal = not self.minimal
-        self.toggleVar.set(minimal and '>' or '<')
-        pb = self.progressBar
-        progressText = ''
-        if self.minimal:
-            progressText = '%d/%d' % (self.runCountVar.get(), self.totalTests)
-            if self.failCountVar.get():
-                progressText += ' %dF' % self.failCountVar.get()
-            if self.errorCountVar.get():
-                progressText += ' %dE' % self.errorCountVar.get()
-            if self.warningListbox.size():
-                progressText += ' %dW' % self.warningListbox.size()
-        pb.setProgressFraction(pb.fraction, progressText, pb.color)
-        self.rePack()
-
-    def rePack(self, minimal=None, with_idle_wait=0):
-        if minimal is None:
-            minimal = self.minimal
-        for widget, layoutattr, do_hide in self.packWidgets:
-            if minimal and do_hide:
-                widget.pack_forget()
-            else:
-                if not do_hide:
-                    widget.pack_forget()
-                apply(widget.pack, (), layoutattr)
-            if with_idle_wait and not minimal:
-                self.top.update_idletasks()
-        self.root.geometry("")
-
-    def getSelectedTestName(self):
-        return self.suiteNameVar.get()
-
-    def errorDialog(self, title, message):
-        tkMessageBox.showerror(parent=self.root, title=title,
-                               message=message)
-
-    def notifyStartImport(self):
-        if self.minimal:
-            self.progressBar.setProgressFraction(0.0, 'Importing...')
-        else:
-            self.statusVar.set("Importing tests...")
-        self.top.update_idletasks()
-
-    def notifyRunning(self):
-        self.runCountVar.set(0)
-        self.failCountVar.set(0)
-        self.errorCountVar.set(0)
-        self.remainingCountVar.set(self.totalTests)
-        self.errorInfo = []
-        self.warnInfo = []
-        while self.errorListbox.size():
-            self.errorListbox.delete(0)
-        while self.warningListbox.size():
-            self.warningListbox.delete(0)
-        #Stopping seems not to work, so simply disable the start button
-        #self.stopGoButton.config(command=self.stopClicked, text="Stop")
-        self.stopGoButton.config(state=tk.DISABLED)
-        progressText = self.minimal and ('0/%d' % self.totalTests) or None
-        self.progressBar.setProgressFraction(0.0, progressText)
-        self.top.update_idletasks()
-
-    def notifyStopped(self):
-        self.stopGoButton.config(state=tk.ACTIVE)
-        #self.stopGoButton.config(command=self.runClicked, text="Start")
-        self.statusVar.set("Idle")
-
-    def notifyTestStarted(self, test):
-        test = str(test)
-        if len(test) > 60:
-            test = test[:30] + ' ... ' + test[-25:]
-        self.statusVar.set(test)
-        self.top.update_idletasks()
-
-    def notifyWarning(self, msg, tb_str):
-        self.warningListbox.insert(tk.END, "Warning: %s" % msg)
-        self.warnInfo.append((msg,tb_str))
-
-    def notifyTestFailed(self, test, err):
-        self.failCountVar.set(1 + self.failCountVar.get())
-        self.errorListbox.insert(tk.END, "Failure: %s" % test)
-        self.errorInfo.append((test,err))
-
-    def notifyTestErrored(self, test, err):
-        self.errorCountVar.set(1 + self.errorCountVar.get())
-        self.errorListbox.insert(tk.END, "Error: %s" % test)
-        self.errorInfo.append((test,err))
-
-    def notifyTestFinished(self, test):
-        self.remainingCountVar.set(self.remainingCountVar.get() - 1)
-        run = self.runCountVar.get() + 1
-        self.runCountVar.set(run)
-        fractionDone = float(run)/float(self.totalTests)
-        progressText = ''
-        if self.minimal:
-            progressText = '%d/%d' % (run, self.totalTests)
-            if self.failCountVar.get():
-                progressText += ' %dF' % self.failCountVar.get()
-            if self.errorCountVar.get():
-                progressText += ' %dE' % self.errorCountVar.get()
-            if self.warningListbox.size():
-                progressText += ' %dW' % self.warningListbox.size()
-        fillColor = len(self.errorInfo) and "red" or "green"
-        self.progressBar.setProgressFraction(fractionDone, progressText,
-            fillColor)
-
-    def showAboutDialog(self):
-        tkMessageBox.showinfo(parent=self.root, title="About PyUnit",
-                              message=_ABOUT_TEXT)
-
-    def showHelpDialog(self):
-        tkMessageBox.showinfo(parent=self.root, title="PyUnit help",
-                              message=_HELP_TEXT)
-
-    def showSelectedError(self):
-        selection = self.errorListbox.curselection()
-        if not selection: return
-        selected = int(selection[0])
-        txt = self.errorListbox.get(selected)
-        window = tk.Toplevel(self.root)
-        window.title(txt)
-        window.protocol('WM_DELETE_WINDOW', window.quit)
-        test, error = self.errorInfo[selected]
-        tk.Label(window, text=str(test),
-                 foreground="red", justify=tk.LEFT).pack(anchor=tk.W)
-        tracebackLines = apply(traceback.format_exception, error + (10,))
-        tracebackText = string.join(tracebackLines,'')
-        text = ScrolledText.ScrolledText(window)
-        text.tag_config('sel', relief=tk.FLAT)
-        text.insert(tk.END, tracebackText)
-        if len(tracebackLines) < 20:
-            text.config(height=len(tracebackLines) + 5)
-        text.yview_pickplace(tk.END)
-        text['state'] = tk.DISABLED
-        text['cursor'] = window['cursor']
-        self.attachEditorHotspots(text)
-        text.pack(expand=1, fill=tk.BOTH)
-        b = tk.Button(window, text="Close",
-                      command=window.quit)
-        b.pack(side=tk.BOTTOM)
-        b.focus_set()
-        window.bind('<Key-Return>', lambda e, w=window: w.quit())
-        window.mainloop()
-        window.destroy()
-
-    def showSelectedWarning(self):
-        selection = self.warningListbox.curselection()
-        if not selection: return
-        selected = int(selection[0])
-        txt = self.warningListbox.get(selected)
-        window = tk.Toplevel(self.root)
-        window.title(txt)
-        window.protocol('WM_DELETE_WINDOW', window.quit)
-        test, error = self.warnInfo[selected]
-        tk.Label(window, text=str(test),
-                 foreground="black", justify=tk.LEFT).pack(anchor=tk.W)
-        tk.Label(window, text=error, justify=tk.LEFT).pack()
-        b = tk.Button(window, text="Close",
-                      command=window.quit)
-        b.pack(side=tk.BOTTOM)
-        b.focus_set()
-        window.bind('<Key-Return>', lambda e, w=window: w.quit())
-        window.mainloop()
-        window.destroy()
-
-    def attachEditorHotspots(self, text,
-            fileLine=re.compile('(File "([^"]+)", line (\d+)(?:, in \w+)?)'),
-            methodLine=re.compile('^\s*(\S.*\S)\s*$')):
-        # Attach clickable regions to a traceback displayed in a Text widget.
-        tracebackLines = text.get('1.0', tk.END).splitlines(1)
-        currentFile = ()
-        tagname = ""
-        start, end = 0, 0
-        for i in range(len(tracebackLines)):
-            match = fileLine.search(tracebackLines[i])
-
-            # Filename, linenumber and function
-            if match:
-                file, line = match.group(2, 3)
-                start, end = match.span(1)
-                tagname = "ref%d" % i
-                currentFile = (file, line, tagname)
-            # Contents of that line; part of same region
-            elif currentFile:
-                file, line, tagname = currentFile
-                start, end = methodLine.search(tracebackLines[i]).span(1)
-                currentFile = ()
-            # Something else
-            else:
-                tagname = ""
-
-            if tagname:
-                text.tag_add(tagname,
-                             "%d.%d" % (i + 1, start), "%d.%d" % (i + 1, end))
-                text.tag_bind(tagname, "<Enter>",
-                              lambda e, n=tagname:
-                                    e.widget.tag_config(n, underline=1))
-                text.tag_bind(tagname, "<Leave>",
-                              lambda e, n=tagname:
-                                    e.widget.tag_config(n, underline=0))
-                text.tag_bind(tagname, "<Button-1>",
-                              lambda e, self=self, f=file, l=line:
-                                    self.launchEditor(f, l))
-
-    def launchEditor(self, file, line):
-        editor = (os.environ.get('PYUNIT_EDITOR', None) or
-                  os.environ.get('EDITOR_REMOTE', None) or
-                  os.environ.get('EDITOR', None))
-        if editor:
-            os.system("%s +%s %s" % (editor, line, file))
-
-
-class ProgressBar(tk.Frame):
-    """A simple progress bar that shows a percentage progress in
-    the given colour."""
-
-    def __init__(self, *args, **kwargs):
-        apply(tk.Frame.__init__, (self,) + args, kwargs)
-        self.canvas = tk.Canvas(self, height='20', width='60',
-                                background='white', borderwidth=3)
-        self.canvas.pack(fill=tk.X, expand=1)
-        self.rect = self.text = None
-        self.canvas.bind('<Configure>', self.paint)
-        self.setProgressFraction(0.0)
-
-    def setProgressFraction(self, fraction, label='', color='blue'):
-        self.fraction = fraction
-        self.label = label
-        self.color = color
-        self.paint()
-        self.canvas.update_idletasks()
-
-    def bind(self, sequence=None, callback=None, add=None):
-        "Bindings should be propagated to the contained canvas."
-        tk.Frame.bind(self, sequence, callback, add)
-        self.canvas.bind(sequence, callback, add)
-
-    def unbind(self, sequence):
-        "Bindings should be propagated to the contained canvas."
-        tk.Frame.unbind(self, sequence)
-        self.canvas.unbind(sequence)
-
-    def bind_class(self, className, sequence=None, callback=None, add=None):
-        "Bindings should be propagated to the contained canvas."
-        tk.Frame.bind_class(self, className, sequence, callback, add)
-        self.canvas.bind_class(className, sequence, callback, add)
-
-    def unbind_class(self, className, sequence):
-        "Bindings should be propagated to the contained canvas."
-        tk.Frame.bind_class(self, className, sequence)
-        self.canvas.bind_class(className, sequence)
-
-    def paint(self, *args):
-        totalWidth = self.canvas.winfo_width()
-        width = int(self.fraction * float(totalWidth))
-        height = self.canvas.winfo_height()
-        if self.rect is not None: self.canvas.delete(self.rect)
-        if self.text is not None: self.canvas.delete(self.text)
-        self.rect = self.canvas.create_rectangle(0, 0, width, height,
-                                                 fill=self.color)
-        if self.label:
-            label = self.label
-        else:
-            label = "%3.0f%%" % (100.0 * self.fraction)
-        self.text = self.canvas.create_text(totalWidth/2, height/2,
-                                            anchor=tk.CENTER,
-                                            text=label)
-
-def main(initialTestName="", minimal=0):
-    root = tk.Tk()
-    root.title("PyUnit")
-    runner = TkTestRunner(root, initialTestName, minimal)
-    root.protocol('WM_DELETE_WINDOW', root.quit)
-    root.mainloop()
-
-
-if __name__ == '__main__':
-    import sys
-    import getopt
-    opts, args = getopt.getopt(sys.argv[1:], 'm')
-    minimal = ('-m', '') in opts
-    if args:
-        main(args[0], minimal=minimal)
-    else:
-        main()

Copied: Zope3/branches/dominik-locatableadapters/zeo.conf (from rev 30223, Zope3/trunk/zeo.conf)


Property changes on: Zope3/branches/dominik-locatableadapters/zeo.conf
___________________________________________________________________
Name: cvs2svn:cvs-rev
   + 1.1
Name: svn:eol-style
   + native

Modified: Zope3/branches/dominik-locatableadapters/zope.conf.in
===================================================================
--- Zope3/branches/dominik-locatableadapters/zope.conf.in	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/zope.conf.in	2005-05-02 07:44:19 UTC (rev 30224)
@@ -28,6 +28,17 @@
   <filestorage>
     path Data.fs
   </filestorage>
+
+# uncomment this if you want to connect to a local ZEO server
+# instead:
+#  <zeoclient>
+#    server localhost:9999
+#   storage 1
+#    # ZEO client cache, in bytes
+#    cache-size 20MB
+#    # Uncomment to have a persistent disk cache
+#    #client zeo1
+#  </zeoclient>
 </zodb>
 
 <accesslog>

Modified: Zope3/branches/dominik-locatableadapters/zopeskel/etc/ftesting.zcml
===================================================================
--- Zope3/branches/dominik-locatableadapters/zopeskel/etc/ftesting.zcml	2005-05-01 14:35:53 UTC (rev 30223)
+++ Zope3/branches/dominik-locatableadapters/zopeskel/etc/ftesting.zcml	2005-05-02 07:44:19 UTC (rev 30224)
@@ -10,8 +10,10 @@
 
   <include files="package-includes/*-meta.zcml" />
   <include files="package-includes/*-configure.zcml" />
+  <include files="package-includes/*-ftesting.zcml" />
 
   <include file="securitypolicy.zcml" />
+  <include file="securitypolicy-ftesting.zcml" />
 
   <!-- Principals -->
 
@@ -19,6 +21,21 @@
       id="zope.anybody"
       title="Unauthenticated User" />
 
+  <unauthenticatedGroup
+    id="zope.Anybody"
+    title="Unauthenticated Users" 
+    />
+
+  <authenticatedGroup
+    id="zope.Authenticated"
+    title="Authenticated Users" 
+    />
+
+  <everybodyGroup
+    id="zope.Everybody"
+    title="All Users" 
+    />
+
   <!-- Principal that tests generally run as -->
   <principal
       id="zope.mgr"

Copied: Zope3/branches/dominik-locatableadapters/zopeskel/etc/securitypolicy-ftesting.zcml (from rev 30223, Zope3/trunk/zopeskel/etc/securitypolicy-ftesting.zcml)


Property changes on: Zope3/branches/dominik-locatableadapters/zopeskel/etc/securitypolicy-ftesting.zcml
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Zope3-Checkins mailing list