diff --git a/django/forms/widgets.py b/django/forms/widgets.py index 5b50f37b67..8c1e20b179 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -552,7 +552,9 @@ class NullBooleanSelect(Select): A Select Widget intended to be used with NullBooleanField. """ def __init__(self, attrs=None): - choices = ((u'1', ugettext('Unknown')), (u'2', ugettext('Yes')), (u'3', ugettext('No'))) + choices = ((u'1', ugettext_lazy('Unknown')), + (u'2', ugettext_lazy('Yes')), + (u'3', ugettext_lazy('No'))) super(NullBooleanSelect, self).__init__(attrs, choices) def render(self, name, value, attrs=None, choices=()): diff --git a/tests/regressiontests/forms/tests/widgets.py b/tests/regressiontests/forms/tests/widgets.py index 2424bea903..b567ea370e 100644 --- a/tests/regressiontests/forms/tests/widgets.py +++ b/tests/regressiontests/forms/tests/widgets.py @@ -984,6 +984,10 @@ beatle J R Ringo False""") self.assertEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'') +class NullBooleanSelectLazyForm(Form): + """Form to test for lazy evaluation. Refs #17190""" + bool = BooleanField(widget=NullBooleanSelect()) + class FormsI18NWidgetsTestCase(TestCase): def setUp(self): super(FormsI18NWidgetsTestCase, self).setUp() @@ -1025,6 +1029,15 @@ class FormsI18NWidgetsTestCase(TestCase): w.is_localized = True self.assertEqual(w.render('date', datetime.datetime(2007, 9, 17, 12, 51)), u'') + def test_nullbooleanselect(self): + """ + Ensure that the NullBooleanSelect widget's options are lazily + localized. + Refs #17190 + """ + f = NullBooleanSelectLazyForm() + self.assertEqual(f.fields['bool'].widget.render('id_bool', True), u'') + class SelectAndTextWidget(MultiWidget): """