On Mar 6, 2011, at 8:07 AM, Martin Weissenboeck wrote:
> One more question:
> The validator IS_STRONG has the following error messages:
>
> "Minimum length is %s"
> "Maximum length is %s"
> "Must include at least %s of the following : %s"
> "May not contain any of the following: %s"
> "Must include at least %s upper case"
> "May not include any upper case letters"
> "Must include at least %s lower case"
> "May not include any lower case letters"
> "Must include at least %s %s"
> "May not include any numbers"
>
> I think there is no way to translate these messages.
That's true, but they're only used as the default message, as needed, if you
don't pass an error_message in. So, just like IS_INT_IN_RANGE, supply your T()
message and it'll be used instead.
>
> 2011/3/6 Martin Weissenboeck <mweis...@gmail.com>
> Ok, compatibility is a reason I understand.
>
> You are right: if I make a decision, which error message would be appropriate
> for each single field it works fine.
>
> If there is a lot of fields with IS_INT_IN_RANGE requirements like T('enter
> an integer between %(min)g and %(max)g') I will use an additional variable,
> e.g.:
>
> mm=T('enter an integer between %(min)g and %(max)g')
> db.pet.legs.requires=IS_INT_IN_RANGE(0,9,mm)
>
>
> 2011/3/5 Jonathan Lundell <jlund...@pobox.com>
>
> On Mar 5, 2011, at 4:01 AM, Martin Weissenboeck wrote:
>> This solution is not very beautiful, because I have to repeat the string
>> 'fill this', but it works.
>> It does not work for classes like IS_INT_IN_RANGE, because there is a lot of
>> error messages, depending on the values:
>>
>> if minimum is None:
>> if maximum is None:
>> self.error_message = error_message or 'enter an integer'
>> else:
>> self.maximum = int(maximum)
>> if error_message is None:
>> error_message = '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 = '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 = 'enter an integer between %(min)g and
>> %(max)g'
>> self.error_message = error_message % dict(min=self.minimum,
>> max=self.maximum-1)
>>
>> Using the T-"operator" there is no way to translate these error message for
>> example to German.
>> And I think it looks very unprofessional to have mixes English and German
>> messages.
>>
>
> 1.93 was intended as a stable release without big changes, so that it can
> serve as the ongoing release for legacy support of Python 2.4. We'll have
> general support for translation in gluon fairly soon.
>
> In the meantime, using T in the constructor for IS_INT_IN_RANGE should work
> just fine. Is there some specific case that isn't working for you?
>
>