I have a Model and ModelForm like:
from django.utils.translation import ugettext_lazy as _
class Item(models.Model):
category = models.CharField(
max_length=256,
choices=(
('car', _("Cars")),
('computers', _("Computers")),
('furry animal', _("Furry or large animals")),
))
class ItemForm(ModelForm):
class Meta:
model = Item
I have properly catalogued, translated and compiled the strings, and {% trans "Cars" %} shows the translated text as expected.
Now if I pass instances of ItemForm and Item to a template, and use them as {{ form }} and {{ item.category }}, am I correct to assume that they will not by default show the localized choices?
What would be the cleanest and simplest way of having them localized?
Have you tried this yourself?
I’m pretty sure they would be localized. At least
{{ form }}, whereas you would want to use{{ item.get_category_display }}to get the display value for thecategoryfield (i.e. “Furry or large animals”/”Pelzige oder grosse Tiere” (localized) rather than “furry animal” (internal string)).