[Checkins] SVN: z3c.form/trunk/ Add support for refreshing actions after execution. Needs review.

Dan Korostelev nadako at gmail.com
Sat Feb 21 17:33:34 EST 2009


Log message for revision 96970:
  Add support for refreshing actions after execution. Needs review.
  Update translations, as the change above introduced some new interface description strings.

Changed:
  U   z3c.form/trunk/CHANGES.txt
  U   z3c.form/trunk/src/z3c/form/form.py
  U   z3c.form/trunk/src/z3c/form/form.txt
  U   z3c.form/trunk/src/z3c/form/group.py
  U   z3c.form/trunk/src/z3c/form/interfaces.py
  U   z3c.form/trunk/src/z3c/form/locales/de/LC_MESSAGES/z3c.form.po
  U   z3c.form/trunk/src/z3c/form/locales/fr/LC_MESSAGES/z3c.form.po
  U   z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.mo
  U   z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.po
  U   z3c.form/trunk/src/z3c/form/locales/z3c.form.pot
  U   z3c.form/trunk/src/z3c/form/locales/zh_CN/LC_MESSAGES/z3c.form.po

-=-
Modified: z3c.form/trunk/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/CHANGES.txt	2009-02-21 22:33:34 UTC (rev 96970)
@@ -5,6 +5,11 @@
 Version 2.0.0 (unreleased)
 --------------------------
 
+- Feature: Add support for refreshing actions after their execution. This
+  is useful when button action conditions are changing as a result of
+  action execution. All you need is to set the ``refreshActions`` flag
+  of the form to True in your action handler.
+
 - Bug: FieldWidgets update where appending keys and values within each
   update call. Now the util.Manager uses a UniqueOrderedKeys implementation
   which will ensure that we can't add duplicted manager keys. The implementation

Modified: z3c.form/trunk/src/z3c/form/form.py
===================================================================
--- z3c.form/trunk/src/z3c/form/form.py	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/form.py	2009-02-21 22:33:34 UTC (rev 96970)
@@ -160,7 +160,8 @@
 class Form(BaseForm):
     """The Form."""
     zope.interface.implements(
-        interfaces.IInputForm, interfaces.IButtonForm, interfaces.IHandlerForm)
+        interfaces.IInputForm, interfaces.IButtonForm,
+        interfaces.IHandlerForm, interfaces.IActionForm)
 
     buttons = button.Buttons()
 
@@ -169,6 +170,9 @@
     acceptCharset = FieldProperty(interfaces.IInputForm['acceptCharset'])
     accept = FieldProperty(interfaces.IInputForm['accept'])
 
+    actions = FieldProperty(interfaces.IActionForm['actions'])
+    refreshActions = FieldProperty(interfaces.IActionForm['refreshActions'])
+
     @property
     def action(self):
         """See interfaces.IInputForm"""
@@ -190,6 +194,8 @@
         super(Form, self).update()
         self.updateActions()
         self.actions.execute()
+        if self.refreshActions:
+            self.updateActions()
 
     def __call__(self):
         self.update()

Modified: z3c.form/trunk/src/z3c/form/form.txt
===================================================================
--- z3c.form/trunk/src/z3c/form/form.txt	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/form.txt	2009-02-21 22:33:34 UTC (rev 96970)
@@ -1439,6 +1439,70 @@
   <Person u'Roger Ineichen'>
 
 
+Refreshing actions
+------------------
+
+Sometimes, it's useful to update actions again after executing them,
+because some conditions could have changed. For example, imagine
+we have a sequence edit form that has a delete button. We don't
+want to show delete button when the sequence is empty. The button
+condition would handle this, but what if the sequence becomes empty
+as a result of execution of the delete action that was available?
+In that case we want to refresh our actions to new conditions to make
+our delete button not visible anymore. The ``refreshActions`` form
+variable is intended to handle this case.
+
+Let's create a simple form with an action that clears our context
+sequence.
+
+  >>> class SequenceForm(form.Form):
+  ...
+  ...     @button.buttonAndHandler(u'Empty', condition=lambda form:bool(form.context))
+  ...     def handleEmpty(self, action):
+  ...         self.context[:] = []
+  ...         self.refreshActions = True
+
+First, let's illustrate simple cases, when no button is pressed.
+The button will be available when context is not empty. 
+
+  >>> context = [1, 2, 3, 4]
+  >>> request = TestRequest()
+  >>> myForm = SequenceForm(context, request)
+  >>> myForm.update()
+  >>> addTemplate(myForm)
+  >>> print testing.render(myForm, './/xmlns:div[@class="action"]')
+  <div class="action">
+    <input type="submit" id="form-buttons-empty" name="form.buttons.empty"
+           class="submit-widget button-field" value="Empty" />
+  </div>
+
+The button will not be available when the context is empty.
+
+  >>> context = []
+  >>> request = TestRequest()
+  >>> myForm = SequenceForm(context, request)
+  >>> myForm.update()
+  >>> addTemplate(myForm)
+  >>> print testing.render(myForm, './/xmlns:form')
+  <form action=".">
+  </form>
+
+Now, the most interesting case when context is not empty, but becomes
+empty as a result of pressing the "empty" button. We set the
+``refreshActions`` flag in the action handler, so our actions should
+be updated to new conditions.
+
+  >>> context = [1, 2, 3, 4, 5]
+  >>> request = TestRequest(form={
+  ...     'form.buttons.empty': u'Empty'}
+  ...     )
+  >>> myForm = SequenceForm(context, request)
+  >>> myForm.update()
+  >>> addTemplate(myForm)
+  >>> print testing.render(myForm, './/xmlns:form')
+  <form action=".">
+  </form>
+
 Integration tests
 -----------------
 

Modified: z3c.form/trunk/src/z3c/form/group.py
===================================================================
--- z3c.form/trunk/src/z3c/form/group.py	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/group.py	2009-02-21 22:33:34 UTC (rev 96970)
@@ -95,3 +95,5 @@
         self.groups = tuple(groups)
         self.updateActions()
         self.actions.execute()
+        if self.refreshActions:
+            self.updateActions()

Modified: z3c.form/trunk/src/z3c/form/interfaces.py
===================================================================
--- z3c.form/trunk/src/z3c/form/interfaces.py	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/interfaces.py	2009-02-21 22:33:34 UTC (rev 96970)
@@ -786,6 +786,23 @@
         required=True)
 
 
+class IActionForm(zope.interface.Interface):
+    """A form that stores executable actions"""
+    
+    actions = zope.schema.Object(
+        title=_('Actions'),
+        description=_('A list of actons defined on the form'),
+        schema=IActions,
+        required=True)
+
+    refreshActions = zope.schema.Bool(
+        title=_('Refresh actions'),
+        description=_('A flag, when set, causes form actions to be '
+                      'updated again after their execution.'),
+        default=False,
+        required=True)
+
+
 class IContextAware(zope.interface.Interface):
     """Offers a context attribute.
 

Modified: z3c.form/trunk/src/z3c/form/locales/de/LC_MESSAGES/z3c.form.po
===================================================================
--- z3c.form/trunk/src/z3c/form/locales/de/LC_MESSAGES/z3c.form.po	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/locales/de/LC_MESSAGES/z3c.form.po	2009-02-21 22:33:34 UTC (rev 96970)
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: Development/Unknown\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: Tue Feb 10 06:42:00 2009\n"
+"POT-Creation-Date: Sun Feb 22 01:30:45 2009\n"
 "PO-Revision-Date: 2008-09-08 08:27+0100\n"
 "Last-Translator: Hermann Himmelbauer <dusty at qwer.tk>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
@@ -20,11 +20,11 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/z3c/form/browser/multi.py:69 src/z3c/form/form.py:209
+#: src/z3c/form/browser/multi.py:66 src/z3c/form/form.py:215
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: src/z3c/form/browser/multi.py:74
+#: src/z3c/form/browser/multi.py:71
 msgid "Remove selected"
 msgstr ""
 
@@ -53,28 +53,38 @@
 msgid "The system could not process the given value."
 msgstr "Das System konnte die angegebenen Daten nicht verarbeiten."
 
-#: src/z3c/form/form.py:207 src/z3c/form/form.py:246
+#: src/z3c/form/form.py:213 src/z3c/form/form.py:252
 #: src/z3c/form/subform.py:29
 msgid "There were some errors."
 msgstr "Einige Fehler sind aufgetreten."
 
-#: src/z3c/form/form.py:247 src/z3c/form/subform.py:30
+#: src/z3c/form/form.py:253 src/z3c/form/subform.py:30
 msgid "Data successfully updated."
 msgstr "Daten erfolgreich aktualisiert."
 
-#: src/z3c/form/form.py:248 src/z3c/form/subform.py:31
+#: src/z3c/form/form.py:254 src/z3c/form/subform.py:31
 msgid "No changes were applied."
 msgstr "Keine Änderungen durchgeführt."
 
-#: src/z3c/form/form.py:265
+#: src/z3c/form/form.py:271
 msgid "Apply"
 msgstr "Anwenden"
 
-#: src/z3c/form/interfaces.py:1011
+#: src/z3c/form/interfaces.py:1002
+msgid "Buttons"
+msgstr "Buttons"
+
+#: src/z3c/form/interfaces.py:1003
+msgid "A button manager describing the buttons to be used for the form."
+msgstr ""
+"Ein Button-Manager, welcher die Buttons beschreibt, die in der Form "
+"verwendet werden sollen."
+
+#: src/z3c/form/interfaces.py:1028
 msgid "The widget for which the event was created."
 msgstr "Das Widget, für welches der Event erzeugt wurde."
 
-#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:797
+#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:814
 msgid "Context"
 msgstr "Kontext"
 
@@ -83,7 +93,7 @@
 msgid "The context in which the data are validated."
 msgstr "Der Kontext, in dem die Daten validiert werden."
 
-#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1010
+#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1027
 msgid "Widget"
 msgstr "Widget"
 
@@ -117,7 +127,7 @@
 msgstr "Das Schema Field, welches gerendert werden soll."
 
 #: src/z3c/form/interfaces.py:184 src/z3c/form/interfaces.py:570
-#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:858
+#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:875
 msgid "Prefix"
 msgstr "Prefix"
 
@@ -126,7 +136,7 @@
 msgstr "Der Prefix des Fields, mit welchem Namenskonflikte verwendet werden."
 
 #: src/z3c/form/interfaces.py:189 src/z3c/form/interfaces.py:391
-#: src/z3c/form/interfaces.py:823
+#: src/z3c/form/interfaces.py:840
 msgid "Mode"
 msgstr "Modus"
 
@@ -143,11 +153,11 @@
 msgstr "Das Interface, von welchem das Field kommt."
 
 #: src/z3c/form/interfaces.py:199 src/z3c/form/interfaces.py:589
-#: src/z3c/form/interfaces.py:802 src/z3c/form/interfaces.py:828
+#: src/z3c/form/interfaces.py:819 src/z3c/form/interfaces.py:845
 msgid "Ignore Context"
 msgstr "Kontext ignorieren"
 
-#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:803
+#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:820
 msgid ""
 "A flag, when set, forces the widget not to look at the context for a value."
 msgstr ""
@@ -179,7 +189,7 @@
 msgstr "Das Label für einen False-Wert eines Boolean-Felds."
 
 #: src/z3c/form/interfaces.py:374 src/z3c/form/interfaces.py:659
-#: src/z3c/form/interfaces.py:907
+#: src/z3c/form/interfaces.py:924
 msgid "Name"
 msgstr "Name"
 
@@ -187,7 +197,7 @@
 msgid "The name the widget is known under."
 msgstr "Der Name des Widgets unter welchem es geführt wird."
 
-#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:852
+#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:869
 msgid "Label"
 msgstr "Label"
 
@@ -239,7 +249,7 @@
 msgstr "Der Wert, welche das Widget repräsentiert."
 
 #: src/z3c/form/interfaces.py:417 src/z3c/form/interfaces.py:595
-#: src/z3c/form/interfaces.py:834
+#: src/z3c/form/interfaces.py:851
 msgid "Ignore Request"
 msgstr "Request ignorieren"
 
@@ -333,19 +343,19 @@
 msgstr ""
 "Die Sammlung aller Fehler, welche bei der Validierung aufgetreten sind."
 
-#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:829
+#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:846
 msgid "If set the context is ignored to retrieve a value."
 msgstr "Falls gesetzt, wird der Kontext für einen Wert nicht abgefragt."
 
-#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:835
+#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:852
 msgid "If set the request is ignored to retrieve a value."
 msgstr "Falls gesetzt, wird der Request für einen Wert nicht abgefragt."
 
-#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:840
+#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:857
 msgid "Ignore Readonly"
 msgstr "Nur lesbar ignorieren"
 
-#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:841
+#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:858
 msgid "If set then readonly fields will also be shown."
 msgstr "Falls gesetzt, werden nur-lesen-Felder auch angezeigt."
 
@@ -371,7 +381,7 @@
 msgid "The action title."
 msgstr "Der Action-Titel."
 
-#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:901
+#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:918
 msgid "Action"
 msgstr "Action"
 
@@ -415,86 +425,106 @@
 msgid "A list of action handlers defined on the form."
 msgstr "Eine Liste von Action Handler, welche zur Form definiert sind."
 
-#: src/z3c/form/interfaces.py:798
+#: src/z3c/form/interfaces.py:793
+#, fuzzy
+msgid "Actions"
+msgstr "Action"
+
+#: src/z3c/form/interfaces.py:794
+#, fuzzy
+msgid "A list of actons defined on the form"
+msgstr "Eine Liste von Action Handler, welche zur Form definiert sind."
+
+#: src/z3c/form/interfaces.py:799
+msgid "Refresh actions"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:800
+msgid ""
+"A flag, when set, causes form actions to be updated again after their "
+"execution."
+msgstr ""
+
+#: src/z3c/form/interfaces.py:815
 msgid "The context in which the widget is displayed."
 msgstr "Der Kontext, in welchem das Widget angezeigt wird."
 
-#: src/z3c/form/interfaces.py:824
+#: src/z3c/form/interfaces.py:841
 msgid "The mode in which to render the widgets."
 msgstr "Der Modus, in welchem das Widget gerendert werden soll."
 
-#: src/z3c/form/interfaces.py:846
+#: src/z3c/form/interfaces.py:863
 msgid "Widgets"
 msgstr "Widgets"
 
-#: src/z3c/form/interfaces.py:847
+#: src/z3c/form/interfaces.py:864
 msgid "A widget manager containing the widgets to be used in the form."
 msgstr ""
 "Ein Widget Manager, welche die Widgets enthält, die in der Form verwendet "
 "werden."
 
-#: src/z3c/form/interfaces.py:853
+#: src/z3c/form/interfaces.py:870
 #, fuzzy
 msgid "A human readable text describing the form that can be used in the UI."
 msgstr ""
 "Ein menschenlesbarer Text, welche die Form beschreibt, welche im UI "
 "verwendet werden kann."
 
-#: src/z3c/form/interfaces.py:859
+#: src/z3c/form/interfaces.py:876
 msgid "The prefix of the form used to uniquely identify it."
 msgstr ""
 "Der Prefix der Form, welcher benutzt wird, um diese eindeutig zu "
 "identifizieren."
 
-#: src/z3c/form/interfaces.py:863
+#: src/z3c/form/interfaces.py:880
 msgid "Status"
 msgstr "Status"
 
-#: src/z3c/form/interfaces.py:864
+#: src/z3c/form/interfaces.py:881
 msgid "The status message of the form."
 msgstr "Die Statusmeldung der form."
 
-#: src/z3c/form/interfaces.py:902
+#: src/z3c/form/interfaces.py:919
 #, fuzzy
 msgid "The action defines the URI to which the form data are sent."
 msgstr ""
 "Die Action definiert die URI, an welche die Form-Daten gesendet werden."
 
-#: src/z3c/form/interfaces.py:908
+#: src/z3c/form/interfaces.py:925
 msgid "The name of the form used to identify it."
 msgstr "Der Name der Form, mit welchem sie identifiziert wird."
 
-#: src/z3c/form/interfaces.py:912
+#: src/z3c/form/interfaces.py:929
 msgid "Id"
 msgstr "Id"
 
-#: src/z3c/form/interfaces.py:913
+#: src/z3c/form/interfaces.py:930
 msgid "The id of the form used to identify it."
 msgstr "Die Id der Form, mit welcher sie identifiziert wird."
 
-#: src/z3c/form/interfaces.py:917
+#: src/z3c/form/interfaces.py:934
 msgid "Method"
 msgstr "Methode"
 
-#: src/z3c/form/interfaces.py:918
+#: src/z3c/form/interfaces.py:935
 msgid "The HTTP method used to submit the form."
 msgstr "Die HTTP-Methode, welche für das Submitten der Form verwendet wird."
 
-#: src/z3c/form/interfaces.py:924
+#: src/z3c/form/interfaces.py:941
 msgid "Encoding Type"
 msgstr "Encoding Type"
 
-#: src/z3c/form/interfaces.py:925
+#: src/z3c/form/interfaces.py:942
 msgid "The data encoding used to submit the data safely."
 msgstr ""
 "Das Daten-Encoding, welches verwendet wird, um die Daten zuverlässig "
 "übertragen werden."
 
-#: src/z3c/form/interfaces.py:930
+#: src/z3c/form/interfaces.py:947
 msgid "Accepted Character Sets"
 msgstr "Akzeptierte Character-Sets"
 
-#: src/z3c/form/interfaces.py:931
+#: src/z3c/form/interfaces.py:948
 #, fuzzy
 msgid ""
 "This is a list of character sets the server accepts. By default this is "
@@ -503,35 +533,25 @@
 "Das ist eine Liste von Character-Sets, welche der Server akzeptiert. Als "
 "Grundeinstellung ist dies unbekannt."
 
-#: src/z3c/form/interfaces.py:936
+#: src/z3c/form/interfaces.py:953
 msgid "Accepted Content Types"
 msgstr "Akzeptierte Content-Types."
 
-#: src/z3c/form/interfaces.py:937
+#: src/z3c/form/interfaces.py:954
 msgid "This is a list of content types the server can safely handle."
 msgstr ""
 "Eine Liste von Content-Types, welche der Server zuverlässig verarbeiten kann."
 
-#: src/z3c/form/interfaces.py:975
+#: src/z3c/form/interfaces.py:992
 msgid "Fields"
 msgstr "Fields"
 
-#: src/z3c/form/interfaces.py:976
+#: src/z3c/form/interfaces.py:993
 msgid "A field manager describing the fields to be used for the form."
 msgstr ""
 "Ein Field-Manager, welcher die Felder beschreibt, die für die Form verwendet "
 "werden sollen."
 
-#: src/z3c/form/interfaces.py:985
-msgid "Buttons"
-msgstr "Buttons"
-
-#: src/z3c/form/interfaces.py:986
-msgid "A button manager describing the buttons to be used for the form."
-msgstr ""
-"Ein Button-Manager, welcher die Buttons beschreibt, die in der Form "
-"verwendet werden sollen."
-
 #: src/z3c/form/term.py:152
 msgid "yes"
 msgstr "Ja"

Modified: z3c.form/trunk/src/z3c/form/locales/fr/LC_MESSAGES/z3c.form.po
===================================================================
--- z3c.form/trunk/src/z3c/form/locales/fr/LC_MESSAGES/z3c.form.po	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/locales/fr/LC_MESSAGES/z3c.form.po	2009-02-21 22:33:34 UTC (rev 96970)
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: z3c.form\n"
 "Report-Msgid-Bugs-To: Zope 3 Developers <zope3-dev at zope.org>\n"
-"POT-Creation-Date: Tue Feb 10 06:42:00 2009\n"
+"POT-Creation-Date: Sun Feb 22 01:30:45 2009\n"
 "PO-Revision-Date: 2008-09-05 16:20+0200\n"
 "Last-Translator: Christophe Combelles <ccomb at free.fr>\n"
 "Language-Team: Zope 3 French Users <zope3-french-user at lists.afpy.org>\n"
@@ -20,11 +20,11 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/z3c/form/browser/multi.py:69 src/z3c/form/form.py:209
+#: src/z3c/form/browser/multi.py:66 src/z3c/form/form.py:215
 msgid "Add"
 msgstr "Ajouter"
 
-#: src/z3c/form/browser/multi.py:74
+#: src/z3c/form/browser/multi.py:71
 msgid "Remove selected"
 msgstr ""
 
@@ -52,28 +52,38 @@
 msgid "The system could not process the given value."
 msgstr "Le système n'a pas pu traiter la valeur fournie."
 
-#: src/z3c/form/form.py:207 src/z3c/form/form.py:246
+#: src/z3c/form/form.py:213 src/z3c/form/form.py:252
 #: src/z3c/form/subform.py:29
 msgid "There were some errors."
 msgstr "Il y a des erreurs."
 
-#: src/z3c/form/form.py:247 src/z3c/form/subform.py:30
+#: src/z3c/form/form.py:253 src/z3c/form/subform.py:30
 msgid "Data successfully updated."
 msgstr "Les données ont été modifiées avec succès."
 
-#: src/z3c/form/form.py:248 src/z3c/form/subform.py:31
+#: src/z3c/form/form.py:254 src/z3c/form/subform.py:31
 msgid "No changes were applied."
 msgstr "Aucuns changements n'a été effectué."
 
-#: src/z3c/form/form.py:265
+#: src/z3c/form/form.py:271
 msgid "Apply"
 msgstr "Appliquer"
 
-#: src/z3c/form/interfaces.py:1011
+#: src/z3c/form/interfaces.py:1002
+msgid "Buttons"
+msgstr "Boutons"
+
+#: src/z3c/form/interfaces.py:1003
+msgid "A button manager describing the buttons to be used for the form."
+msgstr ""
+"Un gestionnaire de boutons décrivant les boutons à utiliser dans le "
+"formulaire."
+
+#: src/z3c/form/interfaces.py:1028
 msgid "The widget for which the event was created."
 msgstr "Le widget pour lequel l'événement a été créé."
 
-#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:797
+#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:814
 msgid "Context"
 msgstr "Contexte"
 
@@ -81,7 +91,7 @@
 msgid "The context in which the data are validated."
 msgstr "Le contexte dans lequel les données sont validées."
 
-#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1010
+#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1027
 msgid "Widget"
 msgstr "Widget"
 
@@ -115,7 +125,7 @@
 msgstr "Le champ du schéma qui doit être rendu"
 
 #: src/z3c/form/interfaces.py:184 src/z3c/form/interfaces.py:570
-#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:858
+#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:875
 msgid "Prefix"
 msgstr "Préfixe"
 
@@ -124,7 +134,7 @@
 msgstr "Le préfixe du champ utilisé pour éviter les conflits de noms."
 
 #: src/z3c/form/interfaces.py:189 src/z3c/form/interfaces.py:391
-#: src/z3c/form/interfaces.py:823
+#: src/z3c/form/interfaces.py:840
 msgid "Mode"
 msgstr "Mode"
 
@@ -141,11 +151,11 @@
 msgstr "L'interface d'où provient le champ."
 
 #: src/z3c/form/interfaces.py:199 src/z3c/form/interfaces.py:589
-#: src/z3c/form/interfaces.py:802 src/z3c/form/interfaces.py:828
+#: src/z3c/form/interfaces.py:819 src/z3c/form/interfaces.py:845
 msgid "Ignore Context"
 msgstr "Ignorer le contexte"
 
-#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:803
+#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:820
 msgid ""
 "A flag, when set, forces the widget not to look at the context for a value."
 msgstr ""
@@ -177,7 +187,7 @@
 msgstr "Le titre de la valeur fausse pour un champ booléen."
 
 #: src/z3c/form/interfaces.py:374 src/z3c/form/interfaces.py:659
-#: src/z3c/form/interfaces.py:907
+#: src/z3c/form/interfaces.py:924
 msgid "Name"
 msgstr "Nom"
 
@@ -185,7 +195,7 @@
 msgid "The name the widget is known under."
 msgstr "Le nom sous lequel est connu le widget."
 
-#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:852
+#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:869
 msgid "Label"
 msgstr "Titre"
 
@@ -240,7 +250,7 @@
 msgstr "La valeur représentée par le widget."
 
 #: src/z3c/form/interfaces.py:417 src/z3c/form/interfaces.py:595
-#: src/z3c/form/interfaces.py:834
+#: src/z3c/form/interfaces.py:851
 msgid "Ignore Request"
 msgstr "Ignorer la requête"
 
@@ -332,19 +342,19 @@
 msgid "The collection of errors that occured during validation."
 msgstr "L'ensemble des erreurs survenues pendant la validation."
 
-#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:829
+#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:846
 msgid "If set the context is ignored to retrieve a value."
 msgstr "Si défini, le contexte est ignoré pour récupérer la valeur."
 
-#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:835
+#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:852
 msgid "If set the request is ignored to retrieve a value."
 msgstr "Si défini, la requête est ignorée pour récupérer la valeur."
 
-#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:840
+#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:857
 msgid "Ignore Readonly"
 msgstr "Ignorer le mode lecture seule"
 
-#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:841
+#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:858
 msgid "If set then readonly fields will also be shown."
 msgstr "Si défini, les champs en lecture seule sont aussi affichés."
 
@@ -370,7 +380,7 @@
 msgid "The action title."
 msgstr "Le titre de l'action."
 
-#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:901
+#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:918
 msgid "Action"
 msgstr "Action"
 
@@ -414,81 +424,101 @@
 msgid "A list of action handlers defined on the form."
 msgstr "Une liste de gestionnaires d'actions définis pour le formulaire."
 
-#: src/z3c/form/interfaces.py:798
+#: src/z3c/form/interfaces.py:793
+#, fuzzy
+msgid "Actions"
+msgstr "Action"
+
+#: src/z3c/form/interfaces.py:794
+#, fuzzy
+msgid "A list of actons defined on the form"
+msgstr "Une liste de gestionnaires d'actions définis pour le formulaire."
+
+#: src/z3c/form/interfaces.py:799
+msgid "Refresh actions"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:800
+msgid ""
+"A flag, when set, causes form actions to be updated again after their "
+"execution."
+msgstr ""
+
+#: src/z3c/form/interfaces.py:815
 msgid "The context in which the widget is displayed."
 msgstr "Le contexte dans lequel le widget est affiché."
 
-#: src/z3c/form/interfaces.py:824
+#: src/z3c/form/interfaces.py:841
 msgid "The mode in which to render the widgets."
 msgstr "Le mode dans lequel les widgets doivent être rendus."
 
-#: src/z3c/form/interfaces.py:846
+#: src/z3c/form/interfaces.py:863
 msgid "Widgets"
 msgstr "Widgets"
 
-#: src/z3c/form/interfaces.py:847
+#: src/z3c/form/interfaces.py:864
 msgid "A widget manager containing the widgets to be used in the form."
 msgstr ""
 "Un gestionnaire de widgets contenant les widgets à utiliser dans le "
 "formulaire."
 
-#: src/z3c/form/interfaces.py:853
+#: src/z3c/form/interfaces.py:870
 #, fuzzy
 msgid "A human readable text describing the form that can be used in the UI."
 msgstr ""
 "Un texte à destination des utilisateurs, décrivant le formulaire à utiliser "
 "dans l'interface utilisateur."
 
-#: src/z3c/form/interfaces.py:859
+#: src/z3c/form/interfaces.py:876
 msgid "The prefix of the form used to uniquely identify it."
 msgstr "Le préfixe du formulaire, utilisé pour l'identifier de manière unique."
 
-#: src/z3c/form/interfaces.py:863
+#: src/z3c/form/interfaces.py:880
 msgid "Status"
 msgstr "Statut"
 
-#: src/z3c/form/interfaces.py:864
+#: src/z3c/form/interfaces.py:881
 msgid "The status message of the form."
 msgstr "Le message de statut du formulaire."
 
-#: src/z3c/form/interfaces.py:902
+#: src/z3c/form/interfaces.py:919
 msgid "The action defines the URI to which the form data are sent."
 msgstr ""
 "L'action définit l'URI à laquelle les données du formulaire sont envoyées."
 
-#: src/z3c/form/interfaces.py:908
+#: src/z3c/form/interfaces.py:925
 msgid "The name of the form used to identify it."
 msgstr "Le nom du formulaire, servant à l'identifier."
 
-#: src/z3c/form/interfaces.py:912
+#: src/z3c/form/interfaces.py:929
 msgid "Id"
 msgstr "Id"
 
-#: src/z3c/form/interfaces.py:913
+#: src/z3c/form/interfaces.py:930
 msgid "The id of the form used to identify it."
 msgstr "L'identifiant du formulaire, servant à l'identifier."
 
-#: src/z3c/form/interfaces.py:917
+#: src/z3c/form/interfaces.py:934
 msgid "Method"
 msgstr "Méthode"
 
-#: src/z3c/form/interfaces.py:918
+#: src/z3c/form/interfaces.py:935
 msgid "The HTTP method used to submit the form."
 msgstr "La méthode HTTP utilisée pour soumettre le formulaire."
 
-#: src/z3c/form/interfaces.py:924
+#: src/z3c/form/interfaces.py:941
 msgid "Encoding Type"
 msgstr "Type d'encodage"
 
-#: src/z3c/form/interfaces.py:925
+#: src/z3c/form/interfaces.py:942
 msgid "The data encoding used to submit the data safely."
 msgstr "L'encodage utilisé pour soumettre les données de manière sûre."
 
-#: src/z3c/form/interfaces.py:930
+#: src/z3c/form/interfaces.py:947
 msgid "Accepted Character Sets"
 msgstr "Jeux de caractères acceptés"
 
-#: src/z3c/form/interfaces.py:931
+#: src/z3c/form/interfaces.py:948
 #, fuzzy
 msgid ""
 "This is a list of character sets the server accepts. By default this is "
@@ -497,35 +527,25 @@
 "Une liste de jeux de caractères que le serveur accepte. Par défaut elle est "
 "inconnue."
 
-#: src/z3c/form/interfaces.py:936
+#: src/z3c/form/interfaces.py:953
 msgid "Accepted Content Types"
 msgstr "Types de contenus acceptés"
 
-#: src/z3c/form/interfaces.py:937
+#: src/z3c/form/interfaces.py:954
 msgid "This is a list of content types the server can safely handle."
 msgstr ""
 "Une liste de types de contenus que le serveur peut prendre en charge de "
 "manière sûre."
 
-#: src/z3c/form/interfaces.py:975
+#: src/z3c/form/interfaces.py:992
 msgid "Fields"
 msgstr "Champs"
 
-#: src/z3c/form/interfaces.py:976
+#: src/z3c/form/interfaces.py:993
 msgid "A field manager describing the fields to be used for the form."
 msgstr ""
 "Un gestionnaire de champs décrivant les champs à utiliser dans le formulaire."
 
-#: src/z3c/form/interfaces.py:985
-msgid "Buttons"
-msgstr "Boutons"
-
-#: src/z3c/form/interfaces.py:986
-msgid "A button manager describing the buttons to be used for the form."
-msgstr ""
-"Un gestionnaire de boutons décrivant les boutons à utiliser dans le "
-"formulaire."
-
 #: src/z3c/form/term.py:152
 msgid "yes"
 msgstr "oui"

Modified: z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.mo
===================================================================
(Binary files differ)

Modified: z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.po
===================================================================
--- z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.po	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/locales/ru/LC_MESSAGES/z3c.form.po	2009-02-21 22:33:34 UTC (rev 96970)
@@ -14,8 +14,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Development/Unknown\n"
-"POT-Creation-Date: Tue Feb 10 06:42:00 2009\n"
-"PO-Revision-Date: 2009-02-10 06:44+0300\n"
+"POT-Creation-Date: Sun Feb 22 01:30:45 2009\n"
+"PO-Revision-Date: 2009-02-22 01:31+0300\n"
 "Last-Translator: Dan Korostelev <nadako at gmail.com>\n"
 "Language-Team: Zope 3 Developers <zope3-dev at zope.org>\n"
 "MIME-Version: 1.0\n"
@@ -23,12 +23,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: zope/app/locales/extract.py\n"
 
-#: src/z3c/form/browser/multi.py:69
-#: src/z3c/form/form.py:209
+#: src/z3c/form/browser/multi.py:66
+#: src/z3c/form/form.py:215
 msgid "Add"
 msgstr "Добавить"
 
-#: src/z3c/form/browser/multi.py:74
+#: src/z3c/form/browser/multi.py:71
 msgid "Remove selected"
 msgstr "Удалить выбранные"
 
@@ -57,32 +57,40 @@
 msgid "The system could not process the given value."
 msgstr "Система не смогла обработать введённое значение."
 
-#: src/z3c/form/form.py:207
-#: src/z3c/form/form.py:246
+#: src/z3c/form/form.py:213
+#: src/z3c/form/form.py:252
 #: src/z3c/form/subform.py:29
 msgid "There were some errors."
 msgstr "Произошли ошибки."
 
-#: src/z3c/form/form.py:247
+#: src/z3c/form/form.py:253
 #: src/z3c/form/subform.py:30
 msgid "Data successfully updated."
 msgstr "Данные успешно обновлены."
 
-#: src/z3c/form/form.py:248
+#: src/z3c/form/form.py:254
 #: src/z3c/form/subform.py:31
 msgid "No changes were applied."
 msgstr "Нет изменений."
 
-#: src/z3c/form/form.py:265
+#: src/z3c/form/form.py:271
 msgid "Apply"
 msgstr "Применить"
 
-#: src/z3c/form/interfaces.py:1011
+#: src/z3c/form/interfaces.py:1002
+msgid "Buttons"
+msgstr "Кнопки"
+
+#: src/z3c/form/interfaces.py:1003
+msgid "A button manager describing the buttons to be used for the form."
+msgstr "Менеджер кнопок, описывающий кнопки, использующиеся в форме."
+
+#: src/z3c/form/interfaces.py:1028
 msgid "The widget for which the event was created."
 msgstr "Виджет, для которого было создано событие."
 
 #: src/z3c/form/interfaces.py:107
-#: src/z3c/form/interfaces.py:797
+#: src/z3c/form/interfaces.py:814
 msgid "Context"
 msgstr "Контекст"
 
@@ -91,7 +99,7 @@
 msgstr "Контекст, в котором проверяются данные."
 
 #: src/z3c/form/interfaces.py:148
-#: src/z3c/form/interfaces.py:1010
+#: src/z3c/form/interfaces.py:1027
 msgid "Widget"
 msgstr "Виджет"
 
@@ -129,7 +137,7 @@
 #: src/z3c/form/interfaces.py:184
 #: src/z3c/form/interfaces.py:570
 #: src/z3c/form/interfaces.py:576
-#: src/z3c/form/interfaces.py:858
+#: src/z3c/form/interfaces.py:875
 msgid "Prefix"
 msgstr "Префикс"
 
@@ -139,7 +147,7 @@
 
 #: src/z3c/form/interfaces.py:189
 #: src/z3c/form/interfaces.py:391
-#: src/z3c/form/interfaces.py:823
+#: src/z3c/form/interfaces.py:840
 msgid "Mode"
 msgstr "Режим"
 
@@ -157,13 +165,13 @@
 
 #: src/z3c/form/interfaces.py:199
 #: src/z3c/form/interfaces.py:589
-#: src/z3c/form/interfaces.py:802
-#: src/z3c/form/interfaces.py:828
+#: src/z3c/form/interfaces.py:819
+#: src/z3c/form/interfaces.py:845
 msgid "Ignore Context"
 msgstr "Игнорировать контекст"
 
 #: src/z3c/form/interfaces.py:200
-#: src/z3c/form/interfaces.py:803
+#: src/z3c/form/interfaces.py:820
 msgid "A flag, when set, forces the widget not to look at the context for a value."
 msgstr "Если этот флаг установлен, виджет не будет искать значение в контексте."
 
@@ -193,7 +201,7 @@
 
 #: src/z3c/form/interfaces.py:374
 #: src/z3c/form/interfaces.py:659
-#: src/z3c/form/interfaces.py:907
+#: src/z3c/form/interfaces.py:924
 msgid "Name"
 msgstr "Имя"
 
@@ -202,7 +210,7 @@
 msgstr "Имя, под которым виджет известен."
 
 #: src/z3c/form/interfaces.py:379
-#: src/z3c/form/interfaces.py:852
+#: src/z3c/form/interfaces.py:869
 msgid "Label"
 msgstr "Надпись"
 
@@ -252,7 +260,7 @@
 
 #: src/z3c/form/interfaces.py:417
 #: src/z3c/form/interfaces.py:595
-#: src/z3c/form/interfaces.py:834
+#: src/z3c/form/interfaces.py:851
 msgid "Ignore Request"
 msgstr "Игнорировать запрос"
 
@@ -328,22 +336,22 @@
 msgstr "Набор ошибок, произошедших во время валидации."
 
 #: src/z3c/form/interfaces.py:590
-#: src/z3c/form/interfaces.py:829
+#: src/z3c/form/interfaces.py:846
 msgid "If set the context is ignored to retrieve a value."
 msgstr "Если установлено, контекст не используется для получения значения."
 
 #: src/z3c/form/interfaces.py:596
-#: src/z3c/form/interfaces.py:835
+#: src/z3c/form/interfaces.py:852
 msgid "If set the request is ignored to retrieve a value."
 msgstr "Если установлено, запрос не используется для получения значения."
 
 #: src/z3c/form/interfaces.py:601
-#: src/z3c/form/interfaces.py:840
+#: src/z3c/form/interfaces.py:857
 msgid "Ignore Readonly"
 msgstr "Игнорировать режим \"только для чтения\""
 
 #: src/z3c/form/interfaces.py:602
-#: src/z3c/form/interfaces.py:841
+#: src/z3c/form/interfaces.py:858
 msgid "If set then readonly fields will also be shown."
 msgstr "Если установлено, поля только для чтения так же будут отображены."
 
@@ -369,7 +377,7 @@
 msgstr "Название действия."
 
 #: src/z3c/form/interfaces.py:681
-#: src/z3c/form/interfaces.py:901
+#: src/z3c/form/interfaces.py:918
 msgid "Action"
 msgstr "Действие"
 
@@ -413,102 +421,110 @@
 msgid "A list of action handlers defined on the form."
 msgstr "Список обработчиков действий, определённых для формы."
 
-#: src/z3c/form/interfaces.py:798
+#: src/z3c/form/interfaces.py:793
+msgid "Actions"
+msgstr "Действия"
+
+#: src/z3c/form/interfaces.py:794
+msgid "A list of actons defined on the form"
+msgstr "Список действий, определённых для формы"
+
+#: src/z3c/form/interfaces.py:799
+msgid "Refresh actions"
+msgstr "Обновить действия"
+
+#: src/z3c/form/interfaces.py:800
+msgid "A flag, when set, causes form actions to be updated again after their execution."
+msgstr "Если этот флаг установлен, форма обновит действия после их выполнения."
+
+#: src/z3c/form/interfaces.py:815
 msgid "The context in which the widget is displayed."
 msgstr "Контекст, в котором отображается виджет."
 
-#: src/z3c/form/interfaces.py:824
+#: src/z3c/form/interfaces.py:841
 msgid "The mode in which to render the widgets."
 msgstr "Режим, в котором отображать виджет."
 
-#: src/z3c/form/interfaces.py:846
+#: src/z3c/form/interfaces.py:863
 msgid "Widgets"
 msgstr "Виджеты"
 
-#: src/z3c/form/interfaces.py:847
+#: src/z3c/form/interfaces.py:864
 msgid "A widget manager containing the widgets to be used in the form."
 msgstr "Менеджер виджетов, содержащий виджеты для использования в форме."
 
-#: src/z3c/form/interfaces.py:853
+#: src/z3c/form/interfaces.py:870
 msgid "A human readable text describing the form that can be used in the UI."
 msgstr "Текст с описанием формы, который может быть использован в пользовательском интерфейсе."
 
-#: src/z3c/form/interfaces.py:859
+#: src/z3c/form/interfaces.py:876
 msgid "The prefix of the form used to uniquely identify it."
 msgstr "Префиск формы, использующийся для её идентификации."
 
-#: src/z3c/form/interfaces.py:863
+#: src/z3c/form/interfaces.py:880
 msgid "Status"
 msgstr "Статус"
 
-#: src/z3c/form/interfaces.py:864
+#: src/z3c/form/interfaces.py:881
 msgid "The status message of the form."
 msgstr "Сообщение о статусе формы."
 
-#: src/z3c/form/interfaces.py:902
+#: src/z3c/form/interfaces.py:919
 msgid "The action defines the URI to which the form data are sent."
 msgstr "Действие, определяет URI, по которому будут отправлены данные формы."
 
-#: src/z3c/form/interfaces.py:908
+#: src/z3c/form/interfaces.py:925
 msgid "The name of the form used to identify it."
 msgstr "Имя формы, использующееся для её идентификации."
 
-#: src/z3c/form/interfaces.py:912
+#: src/z3c/form/interfaces.py:929
 msgid "Id"
 msgstr "Идентификатор"
 
-#: src/z3c/form/interfaces.py:913
+#: src/z3c/form/interfaces.py:930
 msgid "The id of the form used to identify it."
 msgstr "Идентификатор формы."
 
-#: src/z3c/form/interfaces.py:917
+#: src/z3c/form/interfaces.py:934
 msgid "Method"
 msgstr "Метод"
 
-#: src/z3c/form/interfaces.py:918
+#: src/z3c/form/interfaces.py:935
 msgid "The HTTP method used to submit the form."
 msgstr "HTTP-метод, который был использован для отправки формы."
 
-#: src/z3c/form/interfaces.py:924
+#: src/z3c/form/interfaces.py:941
 msgid "Encoding Type"
 msgstr "Тип кодирования"
 
-#: src/z3c/form/interfaces.py:925
+#: src/z3c/form/interfaces.py:942
 msgid "The data encoding used to submit the data safely."
 msgstr "Кодировка данных, использующаяся для их безопасной передачи."
 
-#: src/z3c/form/interfaces.py:930
+#: src/z3c/form/interfaces.py:947
 msgid "Accepted Character Sets"
 msgstr "Допустимые наборы символов"
 
-#: src/z3c/form/interfaces.py:931
+#: src/z3c/form/interfaces.py:948
 msgid "This is a list of character sets the server accepts. By default this is unknown."
 msgstr "Список наборов символов, которые принимает сервер. По умолчанию неизвестно."
 
-#: src/z3c/form/interfaces.py:936
+#: src/z3c/form/interfaces.py:953
 msgid "Accepted Content Types"
 msgstr "Допустимые типы контента"
 
-#: src/z3c/form/interfaces.py:937
+#: src/z3c/form/interfaces.py:954
 msgid "This is a list of content types the server can safely handle."
 msgstr "Список типов контента, которые сервер может безопасно обработать."
 
-#: src/z3c/form/interfaces.py:975
+#: src/z3c/form/interfaces.py:992
 msgid "Fields"
 msgstr "Поля"
 
-#: src/z3c/form/interfaces.py:976
+#: src/z3c/form/interfaces.py:993
 msgid "A field manager describing the fields to be used for the form."
 msgstr "Менеджер полей, описывающий поля, использующиеся в форме."
 
-#: src/z3c/form/interfaces.py:985
-msgid "Buttons"
-msgstr "Кнопки"
-
-#: src/z3c/form/interfaces.py:986
-msgid "A button manager describing the buttons to be used for the form."
-msgstr "Менеджер кнопок, описывающий кнопки, использующиеся в форме."
-
 #: src/z3c/form/term.py:152
 msgid "yes"
 msgstr "да"

Modified: z3c.form/trunk/src/z3c/form/locales/z3c.form.pot
===================================================================
--- z3c.form/trunk/src/z3c/form/locales/z3c.form.pot	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/locales/z3c.form.pot	2009-02-21 22:33:34 UTC (rev 96970)
@@ -14,7 +14,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Development/Unknown\n"
-"POT-Creation-Date: Tue Feb 10 06:43:01 2009\n"
+"POT-Creation-Date: Sun Feb 22 01:30:45 2009\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,12 +23,12 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: zope/app/locales/extract.py\n"
 
-#: src/z3c/form/browser/multi.py:69
-#: src/z3c/form/form.py:209
+#: src/z3c/form/browser/multi.py:66
+#: src/z3c/form/form.py:215
 msgid "Add"
 msgstr ""
 
-#: src/z3c/form/browser/multi.py:74
+#: src/z3c/form/browser/multi.py:71
 msgid "Remove selected"
 msgstr ""
 
@@ -57,32 +57,40 @@
 msgid "The system could not process the given value."
 msgstr ""
 
-#: src/z3c/form/form.py:207
-#: src/z3c/form/form.py:246
+#: src/z3c/form/form.py:213
+#: src/z3c/form/form.py:252
 #: src/z3c/form/subform.py:29
 msgid "There were some errors."
 msgstr ""
 
-#: src/z3c/form/form.py:247
+#: src/z3c/form/form.py:253
 #: src/z3c/form/subform.py:30
 msgid "Data successfully updated."
 msgstr ""
 
-#: src/z3c/form/form.py:248
+#: src/z3c/form/form.py:254
 #: src/z3c/form/subform.py:31
 msgid "No changes were applied."
 msgstr ""
 
-#: src/z3c/form/form.py:265
+#: src/z3c/form/form.py:271
 msgid "Apply"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:1011
+#: src/z3c/form/interfaces.py:1002
+msgid "Buttons"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:1003
+msgid "A button manager describing the buttons to be used for the form."
+msgstr ""
+
+#: src/z3c/form/interfaces.py:1028
 msgid "The widget for which the event was created."
 msgstr ""
 
 #: src/z3c/form/interfaces.py:107
-#: src/z3c/form/interfaces.py:797
+#: src/z3c/form/interfaces.py:814
 msgid "Context"
 msgstr ""
 
@@ -91,7 +99,7 @@
 msgstr ""
 
 #: src/z3c/form/interfaces.py:148
-#: src/z3c/form/interfaces.py:1010
+#: src/z3c/form/interfaces.py:1027
 msgid "Widget"
 msgstr ""
 
@@ -129,7 +137,7 @@
 #: src/z3c/form/interfaces.py:184
 #: src/z3c/form/interfaces.py:570
 #: src/z3c/form/interfaces.py:576
-#: src/z3c/form/interfaces.py:858
+#: src/z3c/form/interfaces.py:875
 msgid "Prefix"
 msgstr ""
 
@@ -139,7 +147,7 @@
 
 #: src/z3c/form/interfaces.py:189
 #: src/z3c/form/interfaces.py:391
-#: src/z3c/form/interfaces.py:823
+#: src/z3c/form/interfaces.py:840
 msgid "Mode"
 msgstr ""
 
@@ -157,13 +165,13 @@
 
 #: src/z3c/form/interfaces.py:199
 #: src/z3c/form/interfaces.py:589
-#: src/z3c/form/interfaces.py:802
-#: src/z3c/form/interfaces.py:828
+#: src/z3c/form/interfaces.py:819
+#: src/z3c/form/interfaces.py:845
 msgid "Ignore Context"
 msgstr ""
 
 #: src/z3c/form/interfaces.py:200
-#: src/z3c/form/interfaces.py:803
+#: src/z3c/form/interfaces.py:820
 msgid "A flag, when set, forces the widget not to look at the context for a value."
 msgstr ""
 
@@ -193,7 +201,7 @@
 
 #: src/z3c/form/interfaces.py:374
 #: src/z3c/form/interfaces.py:659
-#: src/z3c/form/interfaces.py:907
+#: src/z3c/form/interfaces.py:924
 msgid "Name"
 msgstr ""
 
@@ -202,7 +210,7 @@
 msgstr ""
 
 #: src/z3c/form/interfaces.py:379
-#: src/z3c/form/interfaces.py:852
+#: src/z3c/form/interfaces.py:869
 msgid "Label"
 msgstr ""
 
@@ -244,7 +252,7 @@
 
 #: src/z3c/form/interfaces.py:417
 #: src/z3c/form/interfaces.py:595
-#: src/z3c/form/interfaces.py:834
+#: src/z3c/form/interfaces.py:851
 msgid "Ignore Request"
 msgstr ""
 
@@ -320,22 +328,22 @@
 msgstr ""
 
 #: src/z3c/form/interfaces.py:590
-#: src/z3c/form/interfaces.py:829
+#: src/z3c/form/interfaces.py:846
 msgid "If set the context is ignored to retrieve a value."
 msgstr ""
 
 #: src/z3c/form/interfaces.py:596
-#: src/z3c/form/interfaces.py:835
+#: src/z3c/form/interfaces.py:852
 msgid "If set the request is ignored to retrieve a value."
 msgstr ""
 
 #: src/z3c/form/interfaces.py:601
-#: src/z3c/form/interfaces.py:840
+#: src/z3c/form/interfaces.py:857
 msgid "Ignore Readonly"
 msgstr ""
 
 #: src/z3c/form/interfaces.py:602
-#: src/z3c/form/interfaces.py:841
+#: src/z3c/form/interfaces.py:858
 msgid "If set then readonly fields will also be shown."
 msgstr ""
 
@@ -361,7 +369,7 @@
 msgstr ""
 
 #: src/z3c/form/interfaces.py:681
-#: src/z3c/form/interfaces.py:901
+#: src/z3c/form/interfaces.py:918
 msgid "Action"
 msgstr ""
 
@@ -405,102 +413,110 @@
 msgid "A list of action handlers defined on the form."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:798
+#: src/z3c/form/interfaces.py:793
+msgid "Actions"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:794
+msgid "A list of actons defined on the form"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:799
+msgid "Refresh actions"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:800
+msgid "A flag, when set, causes form actions to be updated again after their execution."
+msgstr ""
+
+#: src/z3c/form/interfaces.py:815
 msgid "The context in which the widget is displayed."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:824
+#: src/z3c/form/interfaces.py:841
 msgid "The mode in which to render the widgets."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:846
+#: src/z3c/form/interfaces.py:863
 msgid "Widgets"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:847
+#: src/z3c/form/interfaces.py:864
 msgid "A widget manager containing the widgets to be used in the form."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:853
+#: src/z3c/form/interfaces.py:870
 msgid "A human readable text describing the form that can be used in the UI."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:859
+#: src/z3c/form/interfaces.py:876
 msgid "The prefix of the form used to uniquely identify it."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:863
+#: src/z3c/form/interfaces.py:880
 msgid "Status"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:864
+#: src/z3c/form/interfaces.py:881
 msgid "The status message of the form."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:902
+#: src/z3c/form/interfaces.py:919
 msgid "The action defines the URI to which the form data are sent."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:908
+#: src/z3c/form/interfaces.py:925
 msgid "The name of the form used to identify it."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:912
+#: src/z3c/form/interfaces.py:929
 msgid "Id"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:913
+#: src/z3c/form/interfaces.py:930
 msgid "The id of the form used to identify it."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:917
+#: src/z3c/form/interfaces.py:934
 msgid "Method"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:918
+#: src/z3c/form/interfaces.py:935
 msgid "The HTTP method used to submit the form."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:924
+#: src/z3c/form/interfaces.py:941
 msgid "Encoding Type"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:925
+#: src/z3c/form/interfaces.py:942
 msgid "The data encoding used to submit the data safely."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:930
+#: src/z3c/form/interfaces.py:947
 msgid "Accepted Character Sets"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:931
+#: src/z3c/form/interfaces.py:948
 msgid "This is a list of character sets the server accepts. By default this is unknown."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:936
+#: src/z3c/form/interfaces.py:953
 msgid "Accepted Content Types"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:937
+#: src/z3c/form/interfaces.py:954
 msgid "This is a list of content types the server can safely handle."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:975
+#: src/z3c/form/interfaces.py:992
 msgid "Fields"
 msgstr ""
 
-#: src/z3c/form/interfaces.py:976
+#: src/z3c/form/interfaces.py:993
 msgid "A field manager describing the fields to be used for the form."
 msgstr ""
 
-#: src/z3c/form/interfaces.py:985
-msgid "Buttons"
-msgstr ""
-
-#: src/z3c/form/interfaces.py:986
-msgid "A button manager describing the buttons to be used for the form."
-msgstr ""
-
 #: src/z3c/form/term.py:152
 msgid "yes"
 msgstr ""

Modified: z3c.form/trunk/src/z3c/form/locales/zh_CN/LC_MESSAGES/z3c.form.po
===================================================================
--- z3c.form/trunk/src/z3c/form/locales/zh_CN/LC_MESSAGES/z3c.form.po	2009-02-21 21:17:16 UTC (rev 96969)
+++ z3c.form/trunk/src/z3c/form/locales/zh_CN/LC_MESSAGES/z3c.form.po	2009-02-21 22:33:34 UTC (rev 96970)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"POT-Creation-Date: Tue Feb 10 06:42:00 2009\n"
+"POT-Creation-Date: Sun Feb 22 01:30:45 2009\n"
 "PO-Revision-Date: \n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -11,11 +11,11 @@
 "X-Poedit-Language: Chinese\n"
 "X-Poedit-Country: CHINA\n"
 
-#: src/z3c/form/browser/multi.py:69 src/z3c/form/form.py:209
+#: src/z3c/form/browser/multi.py:66 src/z3c/form/form.py:215
 msgid "Add"
 msgstr "添加"
 
-#: src/z3c/form/browser/multi.py:74
+#: src/z3c/form/browser/multi.py:71
 msgid "Remove selected"
 msgstr ""
 
@@ -44,28 +44,36 @@
 msgid "The system could not process the given value."
 msgstr "系统无法处理给定值."
 
-#: src/z3c/form/form.py:207 src/z3c/form/form.py:246
+#: src/z3c/form/form.py:213 src/z3c/form/form.py:252
 #: src/z3c/form/subform.py:29
 msgid "There were some errors."
 msgstr "有一些错误."
 
-#: src/z3c/form/form.py:247 src/z3c/form/subform.py:30
+#: src/z3c/form/form.py:253 src/z3c/form/subform.py:30
 msgid "Data successfully updated."
 msgstr "数据已成功更新."
 
-#: src/z3c/form/form.py:248 src/z3c/form/subform.py:31
+#: src/z3c/form/form.py:254 src/z3c/form/subform.py:31
 msgid "No changes were applied."
 msgstr "没有变更被应用."
 
-#: src/z3c/form/form.py:265
+#: src/z3c/form/form.py:271
 msgid "Apply"
 msgstr "应用"
 
-#: src/z3c/form/interfaces.py:1011
+#: src/z3c/form/interfaces.py:1002
+msgid "Buttons"
+msgstr "按钮集"
+
+#: src/z3c/form/interfaces.py:1003
+msgid "A button manager describing the buttons to be used for the form."
+msgstr "一个按钮管理器,描述用于表单的按钮."
+
+#: src/z3c/form/interfaces.py:1028
 msgid "The widget for which the event was created."
 msgstr "事件创建窗体"
 
-#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:797
+#: src/z3c/form/interfaces.py:107 src/z3c/form/interfaces.py:814
 msgid "Context"
 msgstr "上下文"
 
@@ -74,7 +82,7 @@
 msgid "The context in which the data are validated."
 msgstr "数据被验证的上下文."
 
-#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1010
+#: src/z3c/form/interfaces.py:148 src/z3c/form/interfaces.py:1027
 msgid "Widget"
 msgstr "窗体"
 
@@ -108,7 +116,7 @@
 msgstr "将会渲染的模式字段"
 
 #: src/z3c/form/interfaces.py:184 src/z3c/form/interfaces.py:570
-#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:858
+#: src/z3c/form/interfaces.py:576 src/z3c/form/interfaces.py:875
 msgid "Prefix"
 msgstr "前缀"
 
@@ -117,7 +125,7 @@
 msgstr "用于避免名字冲突的前缀字段"
 
 #: src/z3c/form/interfaces.py:189 src/z3c/form/interfaces.py:391
-#: src/z3c/form/interfaces.py:823
+#: src/z3c/form/interfaces.py:840
 msgid "Mode"
 msgstr "样式"
 
@@ -134,11 +142,11 @@
 msgstr "字段来自的接口"
 
 #: src/z3c/form/interfaces.py:199 src/z3c/form/interfaces.py:589
-#: src/z3c/form/interfaces.py:802 src/z3c/form/interfaces.py:828
+#: src/z3c/form/interfaces.py:819 src/z3c/form/interfaces.py:845
 msgid "Ignore Context"
 msgstr "忽略上下文"
 
-#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:803
+#: src/z3c/form/interfaces.py:200 src/z3c/form/interfaces.py:820
 msgid ""
 "A flag, when set, forces the widget not to look at the context for a value."
 msgstr "当这个标记被设定时,强制窗体不响应值的上下文."
@@ -168,7 +176,7 @@
 msgstr "Bool字段的假值标签"
 
 #: src/z3c/form/interfaces.py:374 src/z3c/form/interfaces.py:659
-#: src/z3c/form/interfaces.py:907
+#: src/z3c/form/interfaces.py:924
 msgid "Name"
 msgstr "名字"
 
@@ -177,7 +185,7 @@
 msgid "The name the widget is known under."
 msgstr "窗体所知的名字."
 
-#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:852
+#: src/z3c/form/interfaces.py:379 src/z3c/form/interfaces.py:869
 msgid "Label"
 msgstr "标记"
 
@@ -227,7 +235,7 @@
 msgstr "窗体表现值"
 
 #: src/z3c/form/interfaces.py:417 src/z3c/form/interfaces.py:595
-#: src/z3c/form/interfaces.py:834
+#: src/z3c/form/interfaces.py:851
 msgid "Ignore Request"
 msgstr "忽略请求"
 
@@ -313,19 +321,19 @@
 msgid "The collection of errors that occured during validation."
 msgstr "验证中所出现的错误集合"
 
-#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:829
+#: src/z3c/form/interfaces.py:590 src/z3c/form/interfaces.py:846
 msgid "If set the context is ignored to retrieve a value."
 msgstr "如果设置了上下文,忽略取出的一个值."
 
-#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:835
+#: src/z3c/form/interfaces.py:596 src/z3c/form/interfaces.py:852
 msgid "If set the request is ignored to retrieve a value."
 msgstr "如果设置了请求忽略取出的一个值."
 
-#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:840
+#: src/z3c/form/interfaces.py:601 src/z3c/form/interfaces.py:857
 msgid "Ignore Readonly"
 msgstr "忽略只读"
 
-#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:841
+#: src/z3c/form/interfaces.py:602 src/z3c/form/interfaces.py:858
 msgid "If set then readonly fields will also be shown."
 msgstr "如果被设置,只读字段也会被显示."
 
@@ -351,7 +359,7 @@
 msgid "The action title."
 msgstr "动作标题."
 
-#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:901
+#: src/z3c/form/interfaces.py:681 src/z3c/form/interfaces.py:918
 msgid "Action"
 msgstr "动作"
 
@@ -395,107 +403,119 @@
 msgid "A list of action handlers defined on the form."
 msgstr "表单上定义的动作处理器的列表."
 
-#: src/z3c/form/interfaces.py:798
+#: src/z3c/form/interfaces.py:793
+#, fuzzy
+msgid "Actions"
+msgstr "动作"
+
+#: src/z3c/form/interfaces.py:794
+#, fuzzy
+msgid "A list of actons defined on the form"
+msgstr "表单上定义的动作处理器的列表."
+
+#: src/z3c/form/interfaces.py:799
+msgid "Refresh actions"
+msgstr ""
+
+#: src/z3c/form/interfaces.py:800
+msgid ""
+"A flag, when set, causes form actions to be updated again after their "
+"execution."
+msgstr ""
+
+#: src/z3c/form/interfaces.py:815
 msgid "The context in which the widget is displayed."
 msgstr "窗体将被显示的上下文."
 
-#: src/z3c/form/interfaces.py:824
+#: src/z3c/form/interfaces.py:841
 msgid "The mode in which to render the widgets."
 msgstr "渲染窗体的样式"
 
-#: src/z3c/form/interfaces.py:846
+#: src/z3c/form/interfaces.py:863
 msgid "Widgets"
 msgstr "窗体"
 
-#: src/z3c/form/interfaces.py:847
+#: src/z3c/form/interfaces.py:864
 msgid "A widget manager containing the widgets to be used in the form."
 msgstr "一个包含了表单中将用到的所有窗体的窗体管理器."
 
-#: src/z3c/form/interfaces.py:853
+#: src/z3c/form/interfaces.py:870
 #, fuzzy
 msgid "A human readable text describing the form that can be used in the UI."
 msgstr "一份人类可读文本,描述可用于UI的表单"
 
-#: src/z3c/form/interfaces.py:859
+#: src/z3c/form/interfaces.py:876
 msgid "The prefix of the form used to uniquely identify it."
 msgstr "用于唯一标识这个表单的前缀."
 
-#: src/z3c/form/interfaces.py:863
+#: src/z3c/form/interfaces.py:880
 msgid "Status"
 msgstr "状态"
 
-#: src/z3c/form/interfaces.py:864
+#: src/z3c/form/interfaces.py:881
 msgid "The status message of the form."
 msgstr "表单的状态消息."
 
-#: src/z3c/form/interfaces.py:902
+#: src/z3c/form/interfaces.py:919
 #, fuzzy
 msgid "The action defines the URI to which the form data are sent."
 msgstr "定义了表单数据将发送往的URI的动作"
 
-#: src/z3c/form/interfaces.py:908
+#: src/z3c/form/interfaces.py:925
 msgid "The name of the form used to identify it."
 msgstr "用于标识表单的名字"
 
-#: src/z3c/form/interfaces.py:912
+#: src/z3c/form/interfaces.py:929
 msgid "Id"
 msgstr "Id"
 
-#: src/z3c/form/interfaces.py:913
+#: src/z3c/form/interfaces.py:930
 msgid "The id of the form used to identify it."
 msgstr "用于标识表单的id"
 
-#: src/z3c/form/interfaces.py:917
+#: src/z3c/form/interfaces.py:934
 msgid "Method"
 msgstr "方法"
 
-#: src/z3c/form/interfaces.py:918
+#: src/z3c/form/interfaces.py:935
 msgid "The HTTP method used to submit the form."
 msgstr "用于提交表单的HTTP方法."
 
-#: src/z3c/form/interfaces.py:924
+#: src/z3c/form/interfaces.py:941
 msgid "Encoding Type"
 msgstr "编码类型"
 
-#: src/z3c/form/interfaces.py:925
+#: src/z3c/form/interfaces.py:942
 msgid "The data encoding used to submit the data safely."
 msgstr "用于安全提交数据的数据编码."
 
-#: src/z3c/form/interfaces.py:930
+#: src/z3c/form/interfaces.py:947
 msgid "Accepted Character Sets"
 msgstr "可接受的字符集"
 
-#: src/z3c/form/interfaces.py:931
+#: src/z3c/form/interfaces.py:948
 #, fuzzy
 msgid ""
 "This is a list of character sets the server accepts. By default this is "
 "unknown."
 msgstr "这是服务器可接收的字符集清单.默认是未知."
 
-#: src/z3c/form/interfaces.py:936
+#: src/z3c/form/interfaces.py:953
 msgid "Accepted Content Types"
 msgstr "可接受的内容类型"
 
-#: src/z3c/form/interfaces.py:937
+#: src/z3c/form/interfaces.py:954
 msgid "This is a list of content types the server can safely handle."
 msgstr "这是服务器可以安全处理的内容类型清单."
 
-#: src/z3c/form/interfaces.py:975
+#: src/z3c/form/interfaces.py:992
 msgid "Fields"
 msgstr "字段集"
 
-#: src/z3c/form/interfaces.py:976
+#: src/z3c/form/interfaces.py:993
 msgid "A field manager describing the fields to be used for the form."
 msgstr "一个字段管理器,描述将用于表单的字段"
 
-#: src/z3c/form/interfaces.py:985
-msgid "Buttons"
-msgstr "按钮集"
-
-#: src/z3c/form/interfaces.py:986
-msgid "A button manager describing the buttons to be used for the form."
-msgstr "一个按钮管理器,描述用于表单的按钮."
-
 #: src/z3c/form/term.py:152
 msgid "yes"
 msgstr "是"



More information about the Checkins mailing list