Can you post a minimal app the reproduces the problem?
On Saturday, April 6, 2019 at 4:24:12 AM UTC-4, João Matos wrote:
>
> All my grids and forms get auto-translated validation messages correctly.
> Here is an example
>
> table = db.sn_counter # type: Table
>
> grid = SQLFORM.grid(
> table,
> csv=False,
> details=False,
> ondelete=on_delete, # Grid only.
> onvalidation=on_validation, # Form only.
> orderby=db.sn_counter.name,
> paginate=session.auth.user.pagination,
> # represent_none='', # Grid and view form only.
> sortable=False,
> ) # type: gluon.DIV
>
> which uses this table
>
> db.define_table('sn_counter',
> Field('name', 'string', label=T('Name'), length=NAME_LEN,
> notnull=True,
> required=True, unique=True),
> Field('last_assigned', 'integer', default=0, label=T('Last
> assigned'),
> notnull=True, required=True),
> Field('canceled_on', 'datetime', label=T('Canceled on'),
> writable=False),
> Field('canceled_by', 'reference auth_user', label=T('Canceled
> by'),
> writable=False),
> Field('cancel_approved_by', 'reference auth_user',
> label=T('Cancel approved by'), writable=False),
> auth.signature,
> # common_filter = lambda query: db.sn_counter.is_active
> == True,
> format='%(name)s',
> # plural=T('sn counters'), singular=T('sn counter'),
> )
>
> # db.sn_counter.name.requires = (IS_NOT_EMPTY(), IS_NOT_IN_DB(db, '
> sn_counter.name'))
> db.sn_counter.last_assigned.requires = IS_INT_IN_RANGE(0, 100000)
>
> I give the option to the user to change the language between PT and EN.
> Yes, it overrides T.force('pt') with T.force('en') and update sthe page.
> My original code didn't have a T.force('pt') before the extra_fields and
> so all my validation messages appeared correctly in PT or EN, except for
> the validation messages of the extra_fields (they always appeared in EN).
> If I add the T.force('pt') before adding the extra_fields, all my
> validation messages appear correctly in PT or EN, but all the extra_fields
> validation messages appear only in PT.
>
> No, I'm using just one application.
>
>
> sexta-feira, 5 de Abril de 2019 às 23:35:38 UTC+1, Anthony escreveu:
>>
>> Hmm, I see that the framework does add the T translator to the Validator
>> class, so validation messages should be getting translated. There is
>> nothing special about Auth extra_fields -- the validators you add there are
>> no different from the validators added to other fields.
>>
>> Can you give an example of code using the same validator where the
>> message is translated outside of extra_fields but not within extra_fields?
>>
>> Also, in your example, you mentioned when setting T.force('pt'), all
>> messages came out in Portuguese, even if you "change the language to
>> English". What do you mean by "change the language to English" there?
>> Setting T.force('pt') should force all translations to Portuguese unless
>> you override the T.force('pt').
>>
>> Finally, are you running/sending requests to more than one application,
>> not all of which have the same translation files?
>>
>> Anthony
>>
>> On Friday, April 5, 2019 at 2:03:57 PM UTC-4, João Matos wrote:
>>>
>>> All my other error messages (from built-in validators) are
>>> auto-translated. Including for the default auth_user fields (eg. username).
>>> Only the extra_fields are not.
>>>
>>> Is there a fix?
>>>
>>>
>>> sexta-feira, 5 de Abril de 2019 às 18:56:10 UTC+1, Anthony escreveu:
>>>>
>>>> Note, this is due to the recent refactoring of all built-in validators
>>>> (moved from web2py to pydal). Previously, all default error messages were
>>>> translated, but that is no longer the case. Although the automatic
>>>> translation was not documented, I would still consider this a break in
>>>> backward compatibility (particularly given that all Auth error messages
>>>> are
>>>> still being translated automatically).
>>>>
>>>> Anthony
>>>>
>>>> On Thursday, April 4, 2019 at 3:25:10 PM UTC-4, João Matos wrote:
>>>>>
>>>>> When creating extra fields for auth_user, the validation messages for
>>>>> those fields are always in English. They don't comply with the
>>>>> translations
>>>>> available.
>>>>>
>>>>> This does not happen on the default fields.
>>>>>
>>>>>
>>>>> I added this to db.py
>>>>>
>>>>>
>>>>> auth.settings.extra_fields['auth_user'] = [Field('pagination',
>>>>> 'integer', default=9, label=T('Pagination'), notnull=True, required=
>>>>> True, requires=IS_INT_IN_RANGE(5, 51))]
>>>>>
>>>>>
>>>>> When inserting an invalid value, the returned message is always
>>>>>
>>>>> Enter an integer between 5 and 50
>>>>>>
>>>>> even when the web2py language is not English and the languages files
>>>>> have the correct translation available.
>>>>>
>>>>>
>>>>> web2py 2.18.4
>>>>> Python 3.7.1 x86
>>>>> Firefox 66.0.2 x64
>>>>> Windows 7 Pro x64 SP1+all updates
>>>>>
>>>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.