19

在 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 问题,因为这两个函数的问题是相同的。

4

3 回答 3

10

compilemessages将字符串视为“{sitename} 是一个好网站”,但当应用程序运行时,该字符串实际上是例如“MySite 是一个好网站”,当然没有翻译。您必须先翻译裸字符串,然后才能对其执行模板操作。

于 2012-07-22T18:56:34.350 回答
3

以下应该有效:

_('Foo %(x)s') % {'x': "bar"}

s是字符串,d是整数。

于 2019-04-02T13:12:47.807 回答
1

我遇到了同样的问题,所以我先翻译了文本,然后添加了动态内容,例如

title = _(u"is a good website")
title = " ".join([website_name, title])

必须有更好的方法来做到这一点

于 2012-07-22T18:14:57.427 回答