2013-07-30 17 views
8

buduję obiekt json w pliku jinja:Ucieczki cytaty w jinja2

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

a następnie zaimportować powyższy plik jinja2 w tagu skrypt

uwaga: _ ("Text") stosuje się do zostać zastąpione przez tekst tłumaczenia, więc tekst w() zostanie zastąpiony tekstem innego języka, więc nie mogę przewidzieć, czy tłumaczenie będzie zawierało podwójne cudzysłowy:

jakikolwiek pomysł, jak uciec od przychodzących cytatów i przekonwertować je na na przykład "

Edited

Rozwiązanie:

Rozwiązaniem tego problemu było dla nas dokonując python przejść przez wszystkie tłumaczenia i uciec wszystkie qoutations. ale zawsze musimy upewnić się co najmniej po angielsku tekst nie być problematyczne i mimo to mamy Controll nad tym .... tak daleko :)

Spójrz na ten dokument aswell

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

Odpowiedz

2

nie zrozumiał wyraźnie pytania. jeśli ucieczki z pojedynczych ukośniki nie działa, uciec backslashy jak również przy użyciu

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

Tak ucieczki z robót bACKSLASH ale tekst angielski zostanie automatycznie zastąpione na przykład francuski tekst i nigdy nie wiem, czy to francuski tekst ma "w to – Razmig

5

W flask, istnieje filtr domyślny nazywa tojson że można użyć albo ze zwykłego jinja2, można stworzyć swój własny tojson filtr:

>>> 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' jest wielki. gdyby to lista obiektów, które Potrzebowałem jako tablicy json. 'Tags | map (attribute = 'title') | lista | tojson' – luckydonald