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