django中的变量翻译
我想翻译成任何语言的django权限名称。为此,我在django中扩展了django.contrib.auth.models.Permission模型,如下所示: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,才能
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”命令。