Django管理页面国际化-翻译模型名称和属性

Django管理页面国际化-翻译模型名称和属性,django,internationalization,django-admin,gettext,Django,Internationalization,Django Admin,Gettext,Django的国际化非常好(基于gettext,LocaleMiddleware),但是翻译管理页面的模型名和属性的正确方法是什么?我在文档中没有找到任何与此相关的内容: 我想要“订单”而不是“订单”。注意,“订单”未翻译 首先,我定义了一个模型,在settings.py中激活USE_I18N=True,运行django admin makemessages-l ru。默认情况下,不会为模型名称和属性创建任何条目 在我找到的Django源代码中进行Grepping: $ ack "Sel

Django的国际化非常好(基于gettext,LocaleMiddleware),但是翻译管理页面的模型名和属性的正确方法是什么?我在文档中没有找到任何与此相关的内容:

我想要“订单”而不是“订单”。注意,“订单”未翻译

首先,我定义了一个模型,在settings.py中激活
USE_I18N=True
,运行
django admin makemessages-l ru
。默认情况下,不会为模型名称和属性创建任何条目

在我找到的Django源代码中进行Grepping:

$ ack "Select %s to change"
contrib/admin/views/main.py
70:        self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
因此,
verbose\u name
meta属性似乎在这里发挥了一些作用。尝试使用它:

class Order(models.Model):
    subject = models.CharField(max_length=150)
    description = models.TextField()
    class Meta:
        verbose_name = _('order')
现在更新的
po
文件包含可以翻译的
msgid'order'
。所以我把译文放进去了。不幸的是,运行管理页面时会显示相同的“命令”组合

我目前正在使用Django 1.1.1。
有人能给我指一下相关的文件吗?因为谷歌不能同时,我将深入挖掘django源代码…

django文档中未提及的重要内容:

  • 运行django admin compilemessages,例如作为构建的一部分 过程谢谢stevejalim
  • 将django的
    ugettext_lazy()
    应用于模型名称(
    Meta
    类和
    verbose_名称
  • 属性(模型字段
    verbose\u name
    )名称也可以用
    ugettext\u lazy()
  • 在模型元数据中使用惰性转换,否则转换 加载模型类和用户设置时发生, 尤其是浏览器设置,将不被考虑
  • 我对属性名使用了一些作用域,例如分离模型名 和带有管道的属性名称。同样的惯例也适用于其他国家 ruby gettext。背景:“title”或“name”等属性名称已翻译 在大多数语言中,根据上下文的不同而有所不同。例子 “书名”——>德语中的“Titel”或“Buchtitel”。但是 “第|章标题”将被翻译为“Überschrift”
使用上述原则的示例:

from django.utils.translation import ugettext_lazy as _
class Order(models.Model):
    subject = models.CharField(max_length=150, verbose_name = _('Order|subject'))
    description = models.TextField(            verbose_name = _('Order|description'))
    class Meta:
        verbose_name = _('order')
        verbose_name_plural = _('orders')
还是有更好的方法来翻译模型和管理页面

无论哪种方式,我们都应该增强Django文档并填补这一空白


作者在展示如何一步一步地掌握所有django翻译特性方面做了出色的工作。对我来说,这比官方文档要好得多。

很抱歉,但是在更新.po文件后,您是否运行了./manage.py makemessages来更新.mo文件?
makemessages
仅更新po文件。我想你的意思是django管理员编译消息-谢谢你的提示!我认为,因为python是一种动态语言,所以翻译文件没有编译,与C相反。不幸的是,我的解决方案仍然无法提供混合翻译(语言混合在一句话中)。对于模型名称,使用项目的语言代码设置。剩余消息的语言由用户代理(“Accept-Languages”)确定。我将尝试惰性翻译,并告诉它是否有效。我正在使用ugettext_lazy,但不幸的是,is对我不起作用。我已经做了所有这些,但仍然无法获得要翻译的模型名称和字段。我面临着与@m.Dhaouadi相同的问题。我已经完成了所有这些,但仍然无法转换模型名和字段。