【发布时间】:2012-07-22 17:43:11
【问题描述】:
在 Python 2.7 中使用 format 格式化字符串的新推荐方法是否会导致 Django 中出现未翻译的字符串?
字符串在.po 文件中,已翻译,但不会在网站上翻译。例如:
from django.utils.translation import ugettext as _
website_name = "Stackoverflow"
title = _(u"{sitename} is a good website".format(sitename=website_name))
翻译字符串后的.po文件如下所示:
#: path/to/file.py:4
msgid "{sitename} is a good website"
msgstr "{sitename} ist eine gute Website"
在运行django-admin.py compilemessages 并重新启动网络服务器后,在已处理的 HTML 页面上,它仍然是英文的,而所有其他字符串正在被翻译。此外,虽然所有使用format 的字符串都不会被翻译,但使用% 运算符格式化的字符串会按预期进行翻译。这也不是 gettext/ugettext 问题,因为这两个函数的问题是相同的。
【问题讨论】:
-
你试过
_(u"{sitename} is a good website").format... -
这解决了问题。在向这里提问之前,我花了几个小时寻找解决方案,非常感谢您快速而有帮助的回复。为什么您将其发布为评论而不是答案?
-
不适用于OP,但注意
format:Python’s str.format() method will not work when either the format_string or any of the arguments to str.format() contains lazy translation objects.docs.djangoproject.com/en/1.11/topics/i18n/translation/…
标签: python django translation