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



Reply via email to