Django翻译和模型继承

时间:2017-04-14 07:45:22

标签: django

Django 1.11

settings.py

INSTALLED_APPS = [
...
    'general',
    'general_frame',
...
]
LANGUAGE_CODE = 'ru-RU'

USE_I18N = True

USE_L10N = True

常规/ models.py

class GeneralModel(models.Model):
    """Sharing common features of models."""

    title = models.CharField(max_length=200,
                             null=False,
                             blank=False,
                             default="",
                             verbose_name=_("title"))

general_frame / models.py

class GeneralFrame(GeneralModel):

    DOCUMENT = 'D'
    PHOTO = 'P'
    PHOTO_DOCUMENT_CHOICES = ((None, '----'),
                              (DOCUMENT, _('document')),
                              (PHOTO, _('photo')),)
    type = models.CharField(max_length=1, choices=PHOTO_DOCUMENT_CHOICES,
                            blank=False,
                            null=False,
                            default="---",
                            verbose_name=_('type'))

我已经执行了makemessages和compilemessages。结构如下:

项目结构:

├── general
│   ├── locale
│   │   └── ru_RU
│   │       └── LC_MESSAGES
│   │           ├── django.mo
│   │           └── django.po
├── general_frame
│   ├── locale
│   │   └── ru_RU
│   │       └── LC_MESSAGES
│   │           ├── django.mo
│   │           └── django.po

问题是:GeneralFrame中的所有内容都已翻译,bot GeneralModel未翻译。我的意思是文件,照片和类型被翻译。但标题没有翻译。

我多次制作消息,检查.po文件和重新编译的消息。

你能帮我一把吗?

1 个答案:

答案 0 :(得分:0)

所以,我的猜测是真的呃? :)

为了让django发现你翻译的字符串,你需要确保用django的一种翻译方法包装字符串,你可以在docs找到它。确保您导入了如下所需的翻译方法:

from django.utils.translation import ugettext_lazy as _

# now you can use _('your string'), and django will discover your string