2013-07-04 61 views
2

我的一個翻譯的不工作,即使字符串: 1)這是一個在tranlsation文件:翻譯不工作 - Django的沒有翻譯包含幾個變量

#: 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)即使測試代碼打印一個串出正確的語言,但不是在第2:

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和仍然沒有工作。

編輯2: 這似乎是一個更大,重複的問題。這些情況下的通用屬性是該字符串包含多個變量。

回答

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" 
+0

就是這樣。謝謝。沒有想到這樣。 –