On Dec 31, 2010, at 6:18 AM, Martin Weissenboeck wrote:
> I want to translate my web page to German. The T()"operator" is very fine,
> but I could not find any way to translate message like
> "enter an integer less than or equal to %(max)g"
> in class IS_INT_IN_RANGE.
>
> I think it is very unprofessional to mix English and German words and I have
> tried to find a solution.
Am I correct that you had to make the translation entries manually (because the
T() search doesn't look in gluon)?
I assume that the current logic was written with the intention of passing in
error_message=T(something); does that work too?
I wonder whether there isn't a general solution that would let us use T() in
gluon code that's invoked by applications.
>
> I have changed the following lines (file validators.py, class
> IS_INT_IN_RANGE)
>
> def __init__(
> self,
> minimum=None,
> maximum=None,
> error_message=None,
> T=lambda x:x,
> ):
> self.minimum = self.maximum = None
> if minimum is None:
> if maximum is None:
> if error_message is None:
> self.error_message = T('enter an integer')
> else:
> self.maximum = int(maximum)
> if error_message is None:
> error_message = T('enter an integer less than or equal to
> %(max)g')
> self.error_message = error_message % dict(max=self.maximum-1)
> elif maximum is None:
> self.minimum = int(minimum)
> if error_message is None:
> error_message = T('enter an integer greater than or equal to
> %(min)g')
> self.error_message = error_message % dict(min=self.minimum)
> else:
> self.minimum = int(minimum)
> self.maximum = int(maximum)
> if error_message is None:
> error_message = T('enter an integer between %(min)g and
> %(max)g')
> self.error_message = error_message % dict(min=self.minimum,
> max=self.maximum-1)
>
> And I have used it:
>
> Field('number', type='integer',
> requires=IS_INT_IN_RANGE(2,5,T=T), label=T('number')),
> ....
>
> It's full compatible. Are there any disadvantages in my solution? Or is there
> any other solution?
>
> Of course the whole file validators.py has to be changed. Maybe the file
> tools.py too?
> Is it possible to use this proposal in the next release?
>