2017-04-14 124 views
0

Django的1.11Django的翻译和模型继承

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文件并重新编译了几次消息。

你能在这里给我一个踢吗?

+0

'_'在那里?你可以请添加导入行到你的代码? –

+1

GökhanSarı,非常感谢你的踢球。在“一般”这是ugettext_lazy。如果你组织一个答案,我很乐意接受它。只是两个字“检查导入”。 – Michael

回答

0

所以,我疯狂的猜测是真的吗? :)

对于Django发现你的翻译字符串,你需要确保你用django的翻译方法之一包装字符串,你可以在docs找到它。请确保您导入了所需的翻译方式,如下所示:

from django.utils.translation import ugettext_lazy as _ 

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