Translating text blocks with Django .. what to do with the HTML?
Asked Answered
L

1

16

The title might not be clear, but I don't know how else to put it..

In the Django documentation it's pretty clear how to mark a text block for translation .. Take this example:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Donec quam sem, sodales in fringilla nec, lacinia a lorem. 
Vivamus vel molestie ante. 

So far so good. You just either use the trans or blocktrans tag.

But now consider this:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Donec quam sem, sodales in fringilla nec, lacinia a lorem. 
<a href="{% url some-view %}">Vivamus vel</a> molestie ante.

How should I deal with this ? Do I just wrap it in a block trans ?

Edit:

I think I've found out how it should be done ..

{% url some-view as some_view_url %}
{% blocktrans %}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Donec quam sem, sodales in fringilla nec, lacinia a lorem. 
<a href="{{ some_view_url }}">Vivamus vel</a> molestie ante.
{% endblocktrans %}
Lumbye answered 3/8, 2010 at 13:59 Comment(0)
G
22

I would definitely use blocktrans. Sometimes its not possible to split i18n html text into different fragments. Blocktrans has some powerfull features:

{% url path.to.view arg arg2 as the_url %}

{% blocktrans with object.title as title and author|title as author_t %}

  {{author}}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
  Donec quam sem, sodales in fringilla nec, lacinia a lorem. 
  <a href="{{the_url}}">{{title}}</a> molestie ante.

{% endblocktrans %}

Have a look at:

Guillaume answered 3/8, 2010 at 14:15 Comment(1)
is there a way to NOT write <a href="{{url}}">{{blah}}</a> - I don't want translators to add HTML. It would be nicer to have {% blocktranslate %} This is a link to {{ link }}.{% endblocktranslate %}. Any chance? (yes, I know I can generate this in the view before, but in the template?)Macadamia

© 2022 - 2024 — McMap. All rights reserved.