我有一个模特:
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
和模型形式:
class ServerForm(ModelForm):
class Meta:
model = Server
从这个app目录中我做了
$ mkdir locale
$ django-admin.py makemessages -l zh_CN
然后我在locale / zh_CN / LC_MESSAGES / django.po中提供了翻译 然后我做了
$ django-admin.py compilemessages
然后我运行了开发服务器:
$ python manage.py runserver
然后去看看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
感谢您的任何评论。
答案 0 :(得分:8)
确保您使用的是lazy_translation。您要导入ugettext_lazy
还是ugettext
?
from django.utils.translation import ugettext_lazy as _
http://docs.djangoproject.com/en/dev/topics/i18n/internationalization/#lazy-translation
答案 1 :(得分:2)
有关信息,django将第一个参数作为字段的详细名称。
所以你也可以用更短的方式编写你的模型,如下所示:
version = models.CharField(_("version"), max_length=100)
serverGroup = models.ForeignKey(_('server_group'), Group, null=True, blank=True)
答案 2 :(得分:0)
在版本1.4上,它仅适用于(对我来说)ugettext而不是ugettext_lazy