> > > On Oct 21, 12:03 pm, Iceberg <iceb...@21cn.com> wrote:
> > > > It is a little bit surprising and happy to see these error_message
> > > > draw enough attention. :-)  So is it time to also consider my proposal
> > > > more than one month before?  
> > > > http://groups.google.com/group/web2py/browse_frm/thread/8cbe658406be595f
>
> > > > That way, we don't even have to adjust the default error_message to
> > > > please everyone. Instead we provide a good way to customize the
> > > > error_message whenever wanted.
>
> > > > What do you think?
>
> > On Oct 22, 1:13 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > Yes but.
>
> > > This is my I normally do:
>
> > > not_empty=IS_NOT_EMPTY(error_message=T('doh!'))
>
> > > db.table.field1.requires=not_empty
> > > db.table.field2.requires=not_empty
>
> > > so no problem with DRY.
>
> > > My objection in the thread was not on your idea in principle but on
> > > the fact that T does not exist until the app is called. I would not
> > > know how to pass T to the validators without a mechanism of hidden
> > > hooks and I would rather avoid that.
> > > Perhaps you can propose a specific possible implementation that I have
> > > not thought of.
>
> > > We should also consider that IF T had been hard coded in validators
> > > now the proposed change in error messages would not be backward
> > > compatible since it would break translations.
>
> > > Massimo
>

> On Oct 23, 10:42 pm, Iceberg <iceb...@21cn.com> wrote:
> > Sure when you are using IS_NOT_EMPTY you can use one instance for all,
> > so no problem with DRY. But, when you are using IS_IN_DB,
> > IS_NOT_IN_DB, IS_IN_SET, etc, you are using different instances so we
> > DO need some approach to internationalize or localize the
> > error_message, in a DRY manner.
>
> > And yes, T can not be called inside validators.py, but at least we can
> > provide a way to customize it inside model or controller. That is why
> > my second suggestion in my earlier thread, and I don't think it breaks
> > backward compatibility. Quote that again as below.
>
> >     class IS_NOT_IN_DB(...):
> >        error_message = 'value already in database' # class wide
> >        def __init__(self,
> >          ...
> >          error_message=None,
> >          ):
> >          if not error_message:
> >             self.error_message = error_message
>
> > so in app's model file we can:
> >   IS_NOT_IN_DB.error_message = T('value already in database!') #
> > class
> > wide
> >   ...
> >   db.Field('foo',
> >     requires=IS_NOT_IN_DB(db,"table.field"))
> >   db.Field('bar',
> >     requires=IS_NOT_IN_DB(db,"table.field2"))
>
> > Same proposal applies to all other validators.
>
> > By the way, based on above suggestion, we can even add one more trick
> > into the scaffold "welcome" app, a file named models/i18n.py, which
> > contains:
> >   IS_NOT_IN_DB.error_message = T('value already in database')
> >   IS_IN_DB.error_message = T('value not in database')
> >   ...
> > That is kind of "how to pass T to the validators without a mechanism
> > of hidden hooks".
>
> > Is it any better?
>
> > Regards,
> > Iceberg


On Oct24, 11:54am, mdipierro <mdipie...@cs.depaul.edu> wrote:
> Nope. This would allow one app to change error messages to other apps.
>
>

Good point. But I still think it is worthy because, hey, at least the
class-variable-error_message proposal does NOT make things any worse,
it just give non-English developers a chance for i18n. Its default
behavior is exactly same as current situation for English developers
and did not lose backward compatibility.

So we have enough pros and cons now. May I summarize things as a memo?

1. So far, the default error_message of all validators are in well-
chosen English, but not i18n-friendly when developing apps for non-
English end users.

2. The normal i18n approach for developers is to initialize different
validator instances, with different error_message in local language or
in a T(...) form. In many cases (IS_IN_DB, IS_NOT_IN_DB, IS_IN_SET,
etc.), this is not Don't-Repeat-Yourself enough.

3. Developers using source code distribution of web2py can adapt the
proposal if they prefer.

Thanks anyway!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to