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):
"""