2012-06-30 27 views
13

Tôi muốn dịch một đoạn có chứa URL trong ứng dụng Django 1.3.Thẻ Django trans và url

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

Tùy thuộc vào ngôn ngữ, văn bản được bao quanh bởi các thẻ <a> chắc chắn sẽ thay đổi. Làm thế nào tôi có thể cho phép người dịch quyết định vị trí liên kết? Gói toàn bộ điều trong một {% trans %} gây ra một lỗi:

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

Lỗi ném là TemplateSyntaxError: Searching for value. Unexpected end of string in column 64: trans "First <a href='{% url edit-profile username=user.username.

Tôi nên làm như thế nào? Tôi có phải xác định URL trong chế độ xem không, sau đó chuyển URL đó làm chuỗi cho mẫu? Điều đó có vẻ như một giải pháp thực sự phức tạp cho những gì tôi nghĩ là một vấn đề rất phổ biến.

Trả lời

37

Sử dụng {% blocktrans %}. Các Django translation docs bao gồm ví dụ này:

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

khó quản lý: s – soField

+0

Cũng không làm việc với các url có tên '{% url "my_url" như the_url%}': cho 'một đặc tả định dạng cho lập luận 'the_url' doesn 't tồn tại trong' msgstr '' – Escher

+0

Nhắc nhở để trích dẫn không gian tên url 'path.to.view' – Dos

Các vấn đề liên quan