生产时无法本地化modelform字段名称

iDe*_*adO 5 django localization django-forms

我有一个模特:

class Server(models.Model):
     serverId = models.IntegerField(verbose_name=_("serverId"))
     name = models.CharField(max_length=200, verbose_name=_("server_name"))
     ip = models.CharField(max_length=200, verbose_name=_("ip"))
     cport = models.IntegerField(default=5000, verbose_name=_("cport"))
     aport = models.IntegerField(default=1000, verbose_name=_("aport"))
     hport = models.IntegerField(default=2000, verbose_name=_("hport"))
     version = models.CharField(max_length=100, verbose_name=_("version"))
     serverGroup = models.ForeignKey(Group, null=True, blank=True,
             verbose_name=_('server_group'))
     class Meta:
         db_table = u'server'

     def __unicode__(self):
         return self.name
Run Code Online (Sandbox Code Playgroud)

和模型形式:

class ServerForm(ModelForm):
    class Meta:
        model = Server
Run Code Online (Sandbox Code Playgroud)

从我在这个app目录中

$ mkdir locale
$ django-admin.py makemessages -l zh_CN
Run Code Online (Sandbox Code Playgroud)

然后我在locale/zh_CN/LC_MESSAGES/django.po中提供了翻译,然后我做了

$ django-admin.py compilemessages
Run Code Online (Sandbox Code Playgroud)

然后我运行了开发服务器:

$ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

然后去看看firefox 中的网址http://127.0.0.1:8000并显示翻译.所以我认为我做对了,我使用nginx + fastcgi在同一台机器上部署了项目,整个项目没有任何改变.然后我转到网址http://127.0.0.1,然后模型在那里显示英文.它没有本地化给中国人.

我已经google了很多,并从docs.djangoproject.com阅读了许多文档,但仍然不知道如何解决问题.所以我在这里问.

我只在settings.py中设置了LANGUAGE_CODE ='zh_CN',并且保留了所有内容.我的django版本是1.2.4

您的任何评论都表示赞赏.

Yuj*_*ita 8

确保使用lazy_translation.你是进口ugettext_lazy还是ugettext

from django.utils.translation import ugettext_lazy as _
Run Code Online (Sandbox Code Playgroud)

http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#lazy-translation