Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django中的变量翻译_Django_Translation - Fatal编程技术网

django中的变量翻译

django中的变量翻译,django,translation,Django,Translation,我想翻译成任何语言的django权限名称。为此,我在django中扩展了django.contrib.auth.models.Permission模型,如下所示: class ExtendedPermission(Permission): translation_name = models.CharField(_('translation_name'),max_length=255) 然后我想在管理命令中更新这个表。第一个“名称”字段取自权限模型,但必须翻译成另一种语言,例如tr,才能

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

class ExtendedPermission(Permission):
    translation_name = models.CharField(_('translation_name'),max_length=255)
然后我想在管理命令中更新这个表。第一个“名称”字段取自权限模型,但必须翻译成另一种语言,例如tr,才能在ExtendedPermission模型中用作翻译名称字段。管理/命令中的此功能:

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.localemidleware'添加到设置文件中。我还运行命令makemessages和compilemessages。

据我所知,django i18n支持使用静态数据,您可以预先生成运行中的makemessages。它查找需要静态字符串的()和{%trains%}等


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

并且在我要翻译的字符串周围没有“fuzzy”命令。