【问题标题】:Variable translation in djangodjango中的变量翻译
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多