#33112: BaseValidator does not localize params passed to rendered 
ValidationError
-------------------------------------+-------------------------------------
     Reporter:  Jake Urban           |                    Owner:  nobody
         Type:  Bug                  |                   Status:  closed
    Component:  Core (Other)         |                  Version:  3.2
     Severity:  Normal               |               Resolution:  needsinfo
     Keywords:  validators,          |             Triage Stage:
  localization, i10n, error,         |  Unreviewed
  message                            |
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  1
-------------------------------------+-------------------------------------
Changes (by Carlton Gibson):

 * status:  new => closed
 * resolution:   => needsinfo


Old description:

> django.core.validators.BaseValidator does not localize the values
> contained in the params dict passed to ValidatorError. The result is that
> error messages contain localized error messages with non-localized
> values.
>
> Here is a photo of an english-style number included in a Portuguese error
> message:
>
> [[Image(https://ibb.co/nwNbsjx)]]

New description:

 django.core.validators.BaseValidator does not localize the values
 contained in the params dict passed to ValidatorError. The result is that
 error messages contain localized error messages with non-localized values.

 Here is a photo of an english-style number included in a Portuguese error
 message:

 [[Image(https://code.djangoproject.com/raw-
 attachment/ticket/33112/Screen%20Shot%202021-09-15%20at%204.42.51%20PM.png)]]

--

Comment:

 Hi Jake — thanks for the report. It's a tricky one.

 I'm not 100% clear what the correct response here should be. Can I ask you
 to follow up with more details to the
 [https://forum.djangoproject.com/c/internals/i18n/14 i18n category on the
 Django Forum] so we can get some more eyes on this?

 What's the localization story we can tell for parameters in translated
 error messages? 🤔

 e.g. `limit_value` in `message = _('Ensure this value is greater than or
 equal to %(limit_value)s.')`

 Testing myself, I don't quite see the behaviour you're pointing to…

 With `es` locale.

 {{{
 import decimal

 from django import forms


 class ExampleForm(forms.Form):
     value = forms.DecimalField(
         max_value=decimal.Decimal(100000.00),
         min_value=decimal.Decimal(10.00),
         max_digits=8,
         decimal_places=2,
     )
 }}}

 I see


 {{{
 >>> from forms import ExampleForm
 >>> f = ExampleForm(data={'value':'1'})
 >>> f.is_valid()
 False
 >>> f.errors
 {'value': ['Asegúrese de que este valor es mayor o igual a 10.']}
 }}}

 Rather than `10.00` from your screenshot.

 So, when you post, can you provide the full reproduce so we're all on
 exactly the same page? Thanks!

 I'll close as needsinfo here for the moment, but we can adjust that based
 on the discussion.
 (I hope that makes sense.)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/33112#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.eb2dd1727779c44b4897f3827884e995%40djangoproject.com.

Reply via email to