I got the problem here is a bug report to the formencode tracker https://sourceforge.net/tracker/?func=detail&atid=596416&aid=2515640&group_id=91231 The cause of such a strange behaviour was.... from xml import xpath after you do it - set_stdtranslation stop work and always return English
On Jan 13, 7:21 pm, mickolka <[email protected]> wrote: > Hi, > I have a different problem with pylons andformencodei18n > when I run the following code in console > importformencode > ne > =formencode.validators.NotEmpty()formencode.api.set_stdtranslation(languages=["de"]) > try: > ne.to_python("") > exceptformencode.api.Invalid, e: > print str(e) > > I get printed > > Bitte einen Wert eingeben > > when I do in inside a controller I get printed > > Please enter a value > > What can be the problem with it? > my easy_install.pth file is > import sys; sys.__plen = len(sys.path) > ./Mako-0.1.8-py2.5.egg > ./nose-0.10.1-py2.5.egg > ./decorator-2.2.0-py2.5.egg > ./PasteScript-1.3.6-py2.5.egg > ./PasteDeploy-1.3.1-py2.5.egg > ./AuthKit-0.4.0-py2.5.egg > ./elementtree-1.2.7_20070827_preview-py2.5.egg > ./python_urljr-1.0.1-py2.5.egg > ./python_yadis-1.1.0-py2.5.egg > ./python_openid-1.2.0-py2.5.egg > ./Babel-0.9.2-py2.5.egg > ./paginate-0.3.2-py2.5.egg > ./sqlalchemy_migrate-0.4.3-py2.5.egg > ./Elixir-0.5.2-py2.5.egg > ./Beaker-0.9.3-py2.5.egg > ./Routes-1.8-py2.5.egg > ./SQLAlchemy-0.4.5-py2.5.egg > ./pytils-0.2.2-py2.5.egg > ./logging-0.4.9.6-py2.5.egg > ./xlrd-0.6.1-py2.5.egg > ./dateutil-1.1-py2.5.egg > ./pytz-2008b-py2.5.egg > ./pygooglechart-0.2.0-py2.5.egg > ./PyYAML-3.05-py2.5.egg > ./setuptools-0.6c8-py2.5.egg > ./Paste-1.7.1-py2.5.egg > ./geopy-0.93-py2.5.egg > ./WebOb-0.9.2-py2.5.egg > ./flup-1.0.1-py2.5.egg > ./bsddb3-4.7.2-py2.5-macosx-10.5-i386.egg > ./simplejson-2.0.4-py2.5-macosx-10.5-i386.egg > ./WebHelpers-0.6.4-py2.5.egg > ./clonedigger-1.0.9_beta-py2.5.egg > ./FormBuild-0.1.6b-py2.5.egg > ./FormEncode-1.0.1-py2.5.egg > ./Pylons-0.9.6.1-py2.5.egg > import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; > p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p > +len(new) > > Also some time ago there were no problems with it, probably it is > somehow related to our switch to newer webhelpers > > Thanks in advance for any help. > > Mykola > > On Nov 20 2008, 9:28 am, "Dalius Dobravolskas" > > <[email protected]> wrote: > > Hi, > > > > I'm having some troubles withFormEncodeand internationalization. > > > What I'm trying to do is to make FE to display properly translated > > > messages for those form fields that are not valid. After a lot of > > > trials and errors I found that (using paster shell): > > > >>>>formencode.api.set_stdtranslation(domain='FormEncode', languages=['it']) > > >>>>formencode.api._stdtrans('Please enter a value') > > > > works as expected and I get the translated message. However: > > > >>>> pylons.decorators.formencode_gettext('Please enter a value') > > > > gives me the original message (i.e. in english). What I don't > > > understand here is that in pylons/decorators/__init__.py there is the > > > following import statament: > > > > fromformencode.api import _stdtrans as formencode_gettext > > > > so calling pylons.decorators.formencode_gettext() should give the same > > > result as callingformencode.api._stdtrans(). But it doesn't! > > > > It's like the former set_stdtranslation() call has no effect when I > > > call _stdtrans() from within pylons. But I really don't understand > > > what's going on here. Any help? > > > While it looks the same it is not:>>>formencode.api._stdtrans > > > <bound method GNUTranslations.ugettext of <gettext.GNUTranslations > > instance at 0x00C63288>>>>> pylons.decorators.formencode_gettext > > > <bound method NullTranslations.ugettext of <gettext.NullTranslations > > instance at 0x00D405D0>> > > > In my opinion you shouldn't use this function directly. decorators > > module exports only jsonify and validate functions. Use them. > > That's how I solved validate problem: > > > from pylons.i18n import set_lang > > > class PeklaStateFactory(object): > > > def __call__(self): > > set_lang('it') > > formencode.api.set_stdtranslation(domain="FormEncode", > > languages=['it']) > > return None > > > state_factory = PeklaStateFactory() > > > That's how you can use state_factory with tosca widgets validate: > > @validate(form=banner_form, error_handler='edit', > > state_factory=state_factory) > > > Pylons validate should use state (not state_factory) but I have not tested > > that. > > > -- > > Daliushttp://blog.sandbox.lt --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/pylons-discuss?hl=en -~----------~----~----~----~------~----~------~--~---
