【问题标题】:Django removes translation in po file, string in mark_safeDjango 删除 po 文件中的翻译,mark_safe 中的字符串
【发布时间】:2011-10-24 13:01:27
【问题描述】:

我尝试翻译字符串,它在 mark_safe() 函数中:

from django.utils.translation import ugettext as ug
...   
mark_safe('<div style="text-align:center"><a href="/calendar/" target="_blank" onclick="return open_popup(this); return false">%s</a></div>' % ug(u'show full calendar'))

不幸的是,当我运行 run django-admin.py makemessages -l pl 时,它不会在 .po 文件中包含这个字符串。我必须手动编辑它,写下这一行,然后它工作正常(字符串被翻译)。每次我运行 makemessages 时都会发生这种情况。

【问题讨论】:

    标签: django internationalization django-admin


    【解决方案1】:

    导入并用作下划线:

    from django.utils.translation import ugettext_lazy as _
    from django.utils.translation import ugettext_lazy as ug
    _('this is seen')
    ug('this is not')
    

    【讨论】:

    • 如果我在一个文件中同时需要 ugettext 和 ugettext_lazy 怎么办?
    • 不要在您的导入中使用别名。只需使用 from django.utils.translation import ugettext_lazy, ugettext。
    【解决方案2】:

    我认为问题出在 mark_safe 和 ug 上:

    from django.utils.translation import ugettext as ug
    ...   
    mark_safe('<div style="text-align:center"><a href="/calendar/" target="_blank" onclick="return open_popup(this); return false">%s</a></div>' % ug(u'show full calendar'))
    

    应该是:

    from django.utils.translation import ugettext as ug
    ...   
    mark_safe('<div style="text-align:center"><a href="/calendar/" target="_blank" onclick="return open_popup(this); return false">%s</a></div>') % ug(u'show full calendar')
    

    注意括号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多