2013-02-25 152 views
7

我想將blocktrans塊的輸出分配給模板變量。將blocktrans輸出分配給變量

你可以做,使用像這樣的反式標籤:

{% trans "Some text to translate" as foo %} 

但是你不能做同樣的一個blocktrans標籤。我沒有在文檔中看到它可以做到這一點。

+0

只是好心地問:你可以更新的答案,以更好的工作與Django 1.9完美。 – webjunkie 2016-06-22 10:30:58

+0

謝謝。更新。 – LeeMobile 2016-06-22 13:55:20

回答

6

Django 1.9增加了一個asvar組件到blocktransAn example from the docs

{% blocktrans asvar the_title %}The title is {{ title }}.{% endblocktrans %} 
<title>{{ the_title }}</title> 
<meta name="description" content="{{ the_title }}"> 

不幸的是,這似乎使添加之前,你需要做的一些其他的方式。

4

這對於blocktrans標籤來說是不可能的。

但是,您可以使用此captureas templatetag來捕獲blocktrans的輸出。

{% captureas trans_value %} 
    {% blocktrans %} 
     This has some stuff in it which will be translated {{ foo }}. 
    {% endblocktrans %} 
{% endcaptureas %} 

{{ trans_value }} 
+0

謝謝你的建議,但我不知道在哪裏把你給的鏈接代碼。 – 2015-07-29 11:49:16

+0

@ olivier-pons您需要將其定義爲[https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/](custom模板標籤),然後將其加載到模板中 – guival 2016-07-26 16:52:18

+0

The接受的答案只適用於django v 1.9+。這個答案適用於<1.9。你可能會說我的產品應該升級,而且你是對的,但是升級並不總是可以預定的。 (同樣,captureas如果比一般的blocktrans更普遍) – 2016-08-23 15:48:13