2014-01-24 55 views
1

我正在嘗試urlencode已翻譯的包含Django(1.6.1)模板中的變量的文本塊。我需要做的,因爲包含翻譯對象的mailto鏈接這樣的:如何使用變量對翻譯的文本塊進行網址編碼?

<a href="mailto:[email protected]?subject=_('Hello {{ username }}')|urlencode">Send email</a> 

除了這個代碼將產生以下輸出:

<a href="mailto:[email protected]?subject=Hello%20%7D%7Dusername%7D%7D%20">Send email</a> 

所以,很顯然,在username變量沒有被評價_()運營商。如果我沒有弄錯,唯一可以評估變量的翻譯標籤是blocktrans

因此,將主題翻譯存儲在專用變量中會是一件好事。例如:

{% blocktrans as subject %}Hello {{ username }}{% endblocktrans %} 
<a href="mailto:[email protected]?subject={{ subject|urlencode }}">Send email</a> 

除「as」不是blocktrans的有效參數外。

我知道我可以用javascript解決這個問題。我正在尋找更多的「Djangonic」解決方案。

回答

0

您可能必須在模板之外執行此操作。無論是模板標籤還是視圖。在任何情況下...而不是:

<a href="mailto:[email protected]?subject=_('Hello {{ username }}')|urlencode">Send email</a> 

你需要的東西是這樣的:

import urllib 
d = {'subject':ugettext(u"Hello %s" % username)} 

,改變主體部分爲

value = urllib.urlencode(d) 

'<a href="mailto:[email protected]?%s">Send email</a>' % value 

如果你正在翻譯 「你好」 由的方式,那麼你也應該考慮翻譯「發送電子郵件」:P

0

嘗試轉義翻譯pin括號:

<a href="mailto:[email protected]?subject=_('Hello \{\{ username \}\}')|urlencode">Send email</a> 

我希望這有助於。

相關問題