Commit fc8efc2d authored by Claude Paroz's avatar Claude Paroz
Browse files

Fixed #19034 -- Added proper i18n pluralization for max/min length validation messages

This was made possible by commit 3f1a0c00. Thanks Evil Clay
for the report and Alexey Boriskin his work on the ticket.
parent c8c7cdc8
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ except ImportError: # Python 2
    from urlparse import urlsplit, urlunsplit

from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext_lazy as _, ungettext_lazy
from django.utils.encoding import force_text
from django.utils.ipv6 import is_valid_ipv6_address
from django.utils import six
@@ -209,12 +209,18 @@ class MinValueValidator(BaseValidator):
class MinLengthValidator(BaseValidator):
    compare = lambda self, a, b: a < b
    clean = lambda self, x: len(x)
    message = _('Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).')
    message = ungettext_lazy(
        'Ensure this value has at least %(limit_value)d character (it has %(show_value)d).',
        'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).',
        'limit_value')
    code = 'min_length'


class MaxLengthValidator(BaseValidator):
    compare = lambda self, a, b: a > b
    clean = lambda self, x: len(x)
    message = _('Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).')
    message = ungettext_lazy(
        'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).',
        'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).',
        'limit_value')
    code = 'max_length'
+5 −2
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ from django.utils import formats
from django.utils.encoding import smart_text, force_str, force_text
from django.utils.ipv6 import clean_ipv6_address
from django.utils import six
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext_lazy as _, ungettext_lazy

# Provide this import for backwards compatibility.
from django.core.validators import EMPTY_VALUES
@@ -505,7 +505,10 @@ class FileField(Field):
        'invalid': _("No file was submitted. Check the encoding type on the form."),
        'missing': _("No file was submitted."),
        'empty': _("The submitted file is empty."),
        'max_length': _('Ensure this filename has at most %(max)d characters (it has %(length)d).'),
        'max_length': ungettext_lazy(
            'Ensure this filename has at most %(max)d character (it has %(length)d).',
            'Ensure this filename has at most %(max)d characters (it has %(length)d).',
            'max'),
        'contradiction': _('Please either submit a file or check the clear checkbox, not both.')
    }