2012-06-30 1 views
13

Voglio tradurre un paragrafo contenente un URL in un'applicazione Django 1.3.Tag Django trans e url

<p> 
    First <a href="{% url edit-profile username=user.username %}">edit your profile</a>, please. 
</p> 

A seconda della lingua, il testo circondato da <a> tag sarà sicuramente cambiare. Come posso consentire ai traduttori di decidere sul posizionamento del link? Avvolgendo l'intera cosa in un {% trans %} causa un errore:

<p>{% trans "First <a href='{% url edit-profile username=user.username %}'>edit your profile</a>, please." %}</p> 

L'errore gettato è TemplateSyntaxError: Searching for value. Unexpected end of string in column 64: trans "First <a href='{% url edit-profile username=user.username.

Come dovrei andare a fare questo? Devo determinare l'URL nella vista, quindi passare quell'URL come stringa al modello? Sembra una soluzione davvero contorta per quello che penserei sia un problema molto comune.

risposta

37

Utilizzare {% blocktrans %}. Il Django translation docs includono questo esempio:

{% url path.to.view arg arg2 as the_url %} 
{% blocktrans %} 
This is a URL: {{ the_url }} 
{% endblocktrans %} 
+0

difficile da gestire: s – soField

+0

Inoltre non funzionano con gli URL chiamato '{% url "my_url" come the_url%}': 'dà una specifica di formato per argomento 'the_url' doesn 't exist in' msgstr'' – Escher

+0

Ricorda di citare lo spazio dei nomi dell'URL 'path.to.view' – Dos