2011-10-24 71 views
1

我試着翻譯字符串,它是在mark_safe()函數:的Django刪除翻譯PO文件,字符串中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')) 

不幸的是,當我運行運行django-admin.py makemessages -l PL,它不包含在.po文件中的這個字符串。我必須手動編輯它,寫這行,然後它工作正常(字符串被翻譯)。每次運行makemessages時都會發生這種情況。

回答

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') 
+0

如果我需要同一個文件中的ugettext和ugettext_lazy會怎麼樣? – alekwisnia

+0

請勿在導入時將它們別名。只需從django.utils.translation中使用導入ugettext_lazy,ugettext即可。 – Wes

1

我認爲這個問題是與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') 

注意括號。