> > > 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 -~----------~----~----~----~------~----~------~--~---