2012-06-30 18 views
13

Quiero traducir un párrafo que contiene una URL en una aplicación Django 1.3.Django etiquetas trans y url

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

Dependiendo del idioma, el texto rodeado por <a> etiquetas sin duda va a cambiar. ¿Cómo puedo permitir que los traductores decidan sobre la ubicación del enlace? Envolver toda la cosa en un {% trans %} provoca un error:

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

El error que se produce es TemplateSyntaxError: Searching for value. Unexpected end of string in column 64: trans "First <a href='{% url edit-profile username=user.username.

¿Cómo debo hacer esto? ¿Debo determinar la URL en la vista y luego pasar esa URL como una cadena a la plantilla? Parece una solución complicada para lo que creo que es un problema muy común.

Respuesta

37

Use {% blocktrans %}. El Django translation docs incluyen este ejemplo:

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

difícil de manejar: s – soField

+0

también no trabaja con URLs llamado '{% url "my_url" como the_url%}': 'da una especificación de formato para el argumento 'the_url' doesn 't existe en' msgstr'' – Escher

+0

Recuerda citar el espacio de nombres de la url 'path.to.view' – Dos

Cuestiones relacionadas