2017-04-14 143 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