我正在进行Django应用程序的本地化。
前端网站运行良好,Django管理网站也会选择所选语言。
但它仅在某些地方应用语言设置,并使用字段和列名称的默认英语版本,即使这些已被翻译。为什么? 如何让它在管理界面中使用列名和字段名称的翻译名称?
示例:
class Order(models.Model):
OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )
user = models.ForeignKey(User, name=_("User") )
payment = models.IntegerField(choices=self.OPTIONS, name=_("Payment"))
我得到了:
我正在使用Django 1.0.2。未被翻译的文本确实出现在区域设置文件中以及有效的文本中。
子问题:是否可以本地化应用名称?
答案 0 :(得分:15)
原来我设置的是名称的翻译版本,而不是 verbose_name 。
这有效:
class Order(models.Model):
OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )
user = models.ForeignKey(User, verbose_name=_("User") )
payment = models.IntegerField(choices=self.OPTIONS, verbose_name=_("Payment"))
答案 1 :(得分:8)
TomA得到了正确答案。
但Django现在将第一个参数作为字段的详细名称except作为ForeignKey
,ManyToManyField
和OneToOneField
字段类型。
所以如果你很懒,你也可以写:
payment = models.IntegerField(_("Payment"), choices=self.OPTIONS)
但仍需要为ForeignKey
示例使用关键字参数:
user = models.ForeignKey(User, verbose_name=_("User"))
答案 2 :(得分:0)
您是否正在为此模型使用自定义ModelForm(在admin.py中)?您需要为您覆盖的字段的标签添加gettext-ed值。
从Django 1.0开始,无法本地化应用程序名称 - 不确定1.1。