2016-01-29 78 views
0

我想翻譯任何語言的django權限名稱。要做到這一點,我在Django延長django.contrib.auth.models.Permission模式是這樣的:django中的變量翻譯

class ExtendedPermission(Permission): 
    translation_name = models.CharField(_('translation_name'),max_length=255) 

然後我想在管理命令來更新這個表。從權限模型拍攝的第一「名稱」字段中,比它必須被翻譯成其它語言例如TR在ExtendedPermission模型translation_name field.This功能管理使用/命令:

def try_translate(self,permission): 
    translation.activate(settings.LANGUAGE_CODE) 
    translation.activate('tr') 
    translated_str =translation.ugettext(permission) 
    translation.deactivate() 
    return translated_str 

當運行此命令的變量不會出現在.po文件中。但是,如果我給字符串,我想這樣翻譯: ugettext(「名稱」)

msgid =「name」出現在.po文件,我可以編輯msgstr,但我可以不使用ugettext從.mo文件獲取已轉換的msgstr。

我將'django.middleware.locale.LocaleMiddleware'添加到設置文件中。我還運行命令makemessages和compilemessages。

+0

並且在我想要翻譯的字符串周圍沒有「模糊」命令。 – xxx34

回答

0

據我所知,Django i18n支持的靜態數據,你預先生成運行makemessages。它尋找需要靜態字符串的_(),{%trains%}等。

如果權限不是靜態知道的(例如,不讀取數據庫),那麼它在makemessages期間不能處理它。