Yes, post the app.

On Saturday, April 6, 2019 at 12:49:15 PM UTC-4, João Matos wrote:
>
> I created a minimal app and it showed the problem.
> I di some further testing and confirmed that there is a relation with the 
> positioning of the T.force().
> If the T.force() is after the extra_fields creation (which reside in 
> db.py), the fields validation messages are always in English, even after 
> changing the language (the changing language code resides in db1.py, but 
> before the table defs).
> If I change the language changing code to before the extra_fields. The 
> extra_fields validation messages show up with the correct language.
>
> Do you still want me to send you the minimal app?
>
>
> sábado, 6 de Abril de 2019 às 17:01:24 UTC+1, Anthony escreveu:
>>
>> 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.

Reply via email to