2013-07-30 60 views
8

逃離報價我建立的神社文件中的JSON對象:在Jinja2的

object_name = { 
    property_name: "{{ _("Some Text which might have "quotes" in it") }}" 
} 

,然後導入上述的Jinja2文件中的腳本標記

注:_(「文本」)用於()中的文本將替換爲另一種語言的文本,所以我無法預測翻譯是否將包含雙引號

任何想法如何轉義傳入的引號並將它們轉換爲例如"

編輯

解決辦法:

的解決了這個問題對我們來說是通過使蟒蛇經過所有翻譯和逃避所有qoutations。但我們總是要確保至少有英文文本不是有問題,反正我們有控制研究過這個....到目前爲止:)

看看這個文件藏漢

http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html#sec-poescapes

回答

2

沒有明確的理解這個問題。如果單反斜線逃逸沒有工作,使用

object_name = { 
    property_name: "{{ _(\\\"Some Text which might have \\\"quotes\\\" in it\\\") }}" 
} 
+1

是用反斜槓的作品,但以英文文本逃逸將被自動地替換爲例如法國的文本和我們永遠不知道,如果是法國文本有「在它 – Razmig

5

flask以及逃避反斜槓,有一個名爲tojson默認過濾器,你可以使用或與普通jinja2,您可以創建自己的tojson過濾器:

>>> import json 
>>> env = jinja2.Environment() 
>>> env.filters['tojson'] = json.dumps 
>>> tmpl = env.from_string("""\ 
object_name = { 
    property_name: {{ _(text)|tojson }} 
}""") 
>>> print tmpl.render({'_': lambda x: x, 'text': 'Some text with "Quotes"'}) 
object_name = { 
    property_name: "Some text with \"Quotes\"" 
} 
+0

'tojson'是巨大的。要是對象的列表,其中我需要作爲json數組。'tags | map(attribute ='title') |列表| tojson' – luckydonald