我想翻译任何语言的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。
答案 0 :(得分:0)
据我了解,Django i18n支持可以处理静态数据,您可以预先生成正在运行的makemessages。它查找需要静态字符串的_(),{%trains%}等。
如果静态不知道权限(例如,不读取数据库),则在makemessages期间无法处理它。