django中的变量转换

时间:2016-01-29 15:20:53

标签: django translation

我想翻译任何语言的django权限名称。为此,我在django中扩展django.contrib.auth.models.Permission模型,如下所示:

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

然后我想在管理命令中更新此表。从权限模型中获取的第一个“名称”字段,必须转换为另一种语言,例如tr,在ExtendedPermission模型中用作translation_name字段。管理/命令中的此函数:

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。

1 个答案:

答案 0 :(得分:0)

据我了解,Django i18n支持可以处理静态数据,您可以预先生成正在运行的makemessages。它查找需要静态字符串的_(),{%trains%}等。

如果静态不知道权限(例如,不读取数据库),则在makemessages期间无法处理它。

相关问题