It appears to me that I can't have german umlauts (or any other non-ascii chars for that matter) on buttons, for example ("Ändern" - with A umlaut - ist german for "Change"):
# -*- coding: utf-8 -*- ... class MyDisplayForm(form.Form): ... @button.buttonAndHandler(u'Ändern') def change(self, action): self.request.response.redirect('edit') tons of error msgs: ... File "/home/reuleaux/work/adrn/src/adrn/browser/views.py", line 489, in ? class MyDisplayForm(form.Form): File "/home/reuleaux/work/adrn/src/adrn/browser/views.py", line 491, in MyDisplayForm @button.buttonAndHandler(u'Ändern') File "/home/reuleaux/tmp/z3c.form/src/z3c/form/button.py", line 181, in buttonAndHandler f_locals['buttons'] += Buttons(button) File "/home/reuleaux/tmp/z3c.form/src/z3c/form/button.py", line 83, in __init__ arg.__name__ = util.createId(arg.title) File "/home/reuleaux/tmp/z3c.form/src/z3c/form/util.py", line 33, in createId return name.encode('hex') File "encodings/hex_codec.py", line 24, in hex_encode zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/reuleaux/work/adrn/parts/adrbuch/site.zcml", line 4.0-4.42 ZopeXMLConfigurationError: File "/home/reuleaux/work/adrn/src/adrn/app.zcml", line 86.2-86.28 ZopeXMLConfigurationError: File "/home/reuleaux/work/adrn/src/adrn/configure.zcml", line 27.2-27.32 ZopeXMLConfigurationError: File "/home/reuleaux/work/adrn/src/adrn/browser/configure.zcml", line 40.2-40.27 ZopeXMLConfigurationError: File "/home/reuleaux/work/adrn/src/adrn/browser/av/configure.zcml", line 14.2 UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 0: ordinal not in range(128) I get similar errors at runtime (when rendering the form) if I try to change the title of an existing button: class AdrEditForm(form.EditForm): ... buttons=form.EditForm.buttons # save changes buttons['apply'].title=u'Änderungen speichern' this gives me: Traceback (most recent call last): File "/home/reuleaux/z3eggs/tmp-nK7Ng/zope.publisher-3.5.0a1.dev_r78838-py2.4.egg/zope/publisher/publish.py", line 133, in publish File "/home/reuleaux/z3eggs/tmp1LrliP/zope.app.publication-3.4.0a1_2-py2.4.egg/zope/app/publication/zopepublication.py", line 167, in callObject File "/home/reuleaux/z3eggs/tmp-nK7Ng/zope.publisher-3.5.0a1.dev_r78838-py2.4.egg/zope/publisher/publish.py", line 108, in mapply - __traceback_info__: <security proxied z3c.pagelet.zcml.AdrEdit instance at 0xb6d1928c> File "/home/reuleaux/z3eggs/tmp-nK7Ng/zope.publisher-3.5.0a1.dev_r78838-py2.4.egg/zope/publisher/publish.py", line 114, in debug_call File "/home/reuleaux/work/adrn/src/adrn/browser/views.py", line 636, in __call__ self.update(**kw) File "/home/reuleaux/work/adrn/src/adrn/browser/views.py", line 692, in update self.form.update() File "/home/reuleaux/work/adrn/src/adrn/browser/views.py", line 334, in update super(AdrEditForm, self).update() File "/home/reuleaux/tmp/z3c.form/src/z3c/form/form.py", line 183, in update self.updateActions() File "/home/reuleaux/tmp/z3c.form/src/z3c/form/form.py", line 179, in updateActions self.actions.update() File "/home/reuleaux/tmp/z3c.form/src/z3c/form/button.py", line 229, in update buttonAction = zope.component.getMultiAdapter( File "/home/reuleaux/z3eggs/tmpxWsYeR/zope.component-3.4.0a1-py2.4.egg/zope/component/_api.py", line 101, in getMultiAdapter File "/home/reuleaux/z3eggs/tmpxWsYeR/zope.component-3.4.0a1-py2.4.egg/zope/component/_api.py", line 114, in queryMultiAdapter File "/home/reuleaux/z3eggs/tmpxWsYeR/zope.component-3.4.0a1-py2.4.egg/zope/component/registry.py", line 206, in queryMultiAdapter File "/home/reuleaux/z3eggs/tmpiBfeIG/zope.interface-3.4.0-py2.4-linux-i686.egg/zope/interface/adapter.py", line 482, in queryMultiAdapter File "/home/reuleaux/tmp/z3c.form/src/z3c/form/button.py", line 191, in __init__ action.Action.__init__(self, request, field.title) File "/home/reuleaux/tmp/z3c.form/src/z3c/form/action.py", line 60, in __init__ name = util.createId(title) File "/home/reuleaux/tmp/z3c.form/src/z3c/form/util.py", line 33, in createId return name.encode('hex') File "encodings/hex_codec.py", line 24, in hex_encode UnicodeEncodeError: 'ascii' codec can't encode character u'\xc4' in position 0: ordinal not in range(128) Two points to note: * I don't want to introduce i18n just for the buttons @button.buttonAndHandler(_(u'Change')) My app is german only and if I was to introduce i18n I would still make german the primary language and English the second, i. e. I would still want @button.buttonAndHandler(_(u'Ändern')) * This caused me no problems in formlib, there I could do e. g. @action(u'Aendern') def aendern(self, action, data): self.request.response.redirect('edit') actions[u'actions.aendern'].label=u'Ändern' @action(u'Loeschen') def loeschen(self, action, data): ... actions[u'actions.loeschen'].label=u'Löschen' This is the last show stopper of z3c.form for me: I promise I will stop lamenting about features of formlib not found in z3c.form once I get this fixed. Did I overlook something here - some easy workaround maybe? -Andreas _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users