翻译不起作用 - django无法翻译包含多个变量的字符串

时间:2013-07-04 09:28:27

标签: django translation django-i18n

即使以下情况,我的一个翻译也无效: 1)它在tranlsation文件中:

#: core/permissions/decorators.py:138
#, python-format
msgid ""
"You are missing permission(s) \"%(permstring)s\" for %(modelname)s %(obj)s"
msgstr ""
"Sul puudub (puuduvad) õigus(ed) \"%(permstring)s\" %(modelname)s %(obj)s "
"suhtes"

2)它不模糊,翻译文件被编译,apache重新启动。

3)事实上,在翻译此字符串时选择了正确的语言 - request.LANGUAGE_CODEtranslation.get_language_from_request(request)都会打印出相同,正确的预期语言代码。

4)即使是经过测试的代码也会以正确的语言输出一个字符串,但不会输入第二个字符串:

my_string = u"%s" % _("Time array")
logger.debug(my_string)

打印出来:

DEBUG 2013-07-04 12:17:28,554 Jada aegadest


mystring = u"%s" %_('You are missing permission(s) "%(permstring)s" for %(modelname)s %(obj)s' % d)
logger.debug(mystring)

打印出来:

DEBUG 2013-07-04 12:22:53,522 You are missing permission(s) "User can access this object" for Obj <idcode>

有没有人知道可能导致这种情况的原因,或者我如何测试更多可能导致这种情况无效的事情。

Django 1.4.2版。

艾伦

EDIT1:

我从翻译文件中删除了引号,使翻译看起来像这样:

#: core/permissions/decorators.py:138
#, python-format
msgid "You are missing permission(s) %(permstring)s for %(modelname)s %(obj)s"
msgstr "Sul puudub (puuduvad) õigus(ed) %(permstring)s %(modelname)s %(obj)s suhtes"

编译并重新启动apache但仍无法正常工作。

EDIT2: 这似乎是一个更大的,重复的问题。这些情况下的常见属性是字符串包含多个变量。

1 个答案:

答案 0 :(得分:2)

取代:

mystring = u"%s" %_('You are missing permission(s) "%(permstring)s" for %(modelname)s (obj)s' % d)
logger.debug(mystring)

使用:

mystring = _('You are missing permission(s) "%(permstring)s" for %(modelname)s (obj)s') % d
logger.debug(mystring)

你需要在> 之前进行插值/格式转换,否则你需要将插值字符串放在你的翻译中(不推荐):

msgid "You are missing permission(s) \"User can access this object\" for Obj <idcode>"
msgstr "Sul puudub (puuduvad) õigus(ed) %(permstring)s %(modelname)s %(obj)s suhtes"