2013-02-13 35 views
0

我已经安装了django-articles应用程序,但不幸的是它没有任何翻译,但是英语并且具有非常差的国际化支持(只有部分消息在messages.po中)。如何在django翻译管理内部应用程序

首先,我试图翻译管理界面(这对我很重要)。

但是我遇到了一个很大的问题:我无法弄清楚Django如何生成一些字段名称以及我应该编辑哪些内容来翻译应用程序。

fieldsets = (
    (None, {'fields': ('title', 'content', 'tags', 'auto_tag', 'status')}), 
    ('Relationships', {    
      'fields': ('related_articles','followup_for'), 
      'classes': ('collapse',) 
     }), 
.... 

在管理Django的产生与子字段“标题”,“内容”,“标签”,块“关系”与子场“相关文章”,块“跟帖对”与职称英语等。 (LANGUAGE_CODE不等于英文)

django这个变化在哪里,我怎么翻译它?

ps。我试图在messages.po中加上msgid“Title”(或“title”),并且在编译消息后没有任何改变。

回答

2

似乎这个应用程序不支持翻译。 用于翻译的字符串必须用gettext函数包装(参考:https://docs.djangoproject.com/en/dev/topics/i18n/translation/

E.g.在管理:

from django.utils.translation import ugettext as _ 

... 

fieldsets = (
(None, {'fields': ('title', 'content', 'tags', 'auto_tag', 'status')}), 
(_('Relationships'), {    
     'fields': ('related_articles','followup_for'), 
     'classes': ('collapse',) 
    }), 

请注意我添加的_()函数。

模型字段的翻译必须以相同的方式完成,例如,在models.py

title = models.CharField(verbose_name=_("Title")) 

当你完成,你可以生成

./manage.py makemessages -l <language_code> 

.po文件,请参阅文档的详细信息。

+0

谢谢。这使得一些事情更清楚。 – rush 2013-02-13 12:48:46

+1

您应该在模型中使用'ugettext_lazy' - 它在使用字符串时解析翻译,而在执行时使用'ugettext',在应用程序启动时使用的语言环境中会有什么。 – 2013-02-13 12:53:39