代码之家  ›  专栏  ›  技术社区  ›  geekQ Petter

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

  •  25
  • geekQ Petter  · 技术社区  · 15 年前

    Django的国际化非常好(基于gettex,localemiddleware),但是如何翻译模型名称和管理页面的属性?我在文件中没有发现任何与此相关的信息:

    I would like to have "Выберите заказ для изменения" instead of "Выберите order для изменения". 注意,“订单”未翻译。

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

    Grepping in the Django source code I found:

    $ 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_name 元属性在这里似乎扮演了某种角色。尝试使用它:

    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源代码…

    1 回复  |  直到 13 年前
        1
  •  36
  •   hobs axoplasm    13 年前

    Django文件中未提及的重要事项:

    • 运行 django-admin compilemessages ,例如作为构建的一部分 过程。谢谢史蒂文贾林!
    • 应用Django公司 ugettext_lazy() 模型名称( Meta 类和 verbose_name )
    • 属性(模型字段 韦伯斯名字 )名称也可以翻译为 UGETTrimeLaZy()
    • 在模型元数据中使用惰性转换,否则转换 在加载模型类和用户设置时发生, 尤其是浏览器设置,不会考虑
    • 我对属性名使用一些范围,例如分隔模型名 和带有管道的属性名。同样的惯例也适用于 Ruby GETTEXT。背景:翻译的属性名如'title'或'name' 在大多数语言中,根据上下文的不同。例子 'book title'->'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文档并填补这个空白!

    推荐文章