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.