国际化对象的属性

时间:2011-01-07 13:02:11

标签: python django templates internationalization django-templates

我的对象有一个名为status的属性。状态可以有两种状态:已打开已关闭。应翻译此属性的值。我尝试过两种方式:

<td> {% trans object.status %} </td>

<td>
    {% blocktrans with object.status as status %} {{ status }} {% endblocktrans %}
</td> 

但没有结果。在django.po文件中,我有一个条目%(状态)s。 Django如何知道如何翻译状态?

2 个答案:

答案 0 :(得分:1)

如果状态只能有两种状态,则应在模型定义中使用choices属性。然后可以将选择的值标记为翻译:

STATUS_CHOICES = (
    ('open', _('open')),
    ('closed', _('closed'))
)

class MyModel(models.Model):
    status = models.CharField(max_length=10, choices=STATUS_CHOICES)

并在模板中使用get_status_display方法:

<td> {{ object.get_status_display }} </td>

答案 1 :(得分:0)

检查你是否将这4行放入po:

msgid "opend"
msgstr "Your translated word"

msgid "closed"
msgstr "your trans word"

并运行:

manage.py compiletranslation

因为当您使用现有.mo文件编辑.po文件时,更改无效