【发布时间】:2016-01-29 15:20:52
【问题描述】:
我想翻译任何语言的 django 权限名称。为此,我在 django 中扩展 django.contrib.auth.models.Permission 模型,如下所示:
class ExtendedPermission(Permission):
translation_name = models.CharField(_('translation_name'),max_length=255)
然后我想在管理命令中更新这个表。第一个“name”字段取自 Permission 模型,然后必须将其翻译成另一种语言,例如 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。
【问题讨论】:
-
我要翻译的字符串周围没有“模糊”命令。
标签: django translation