2010-05-28 23 views
10

Theo this section trong tài liệu Django, tôi nên sử dụng {% blocktrans %} cho các trường hợp tôi cần dịch số nhiều. Tuy nhiên, với một ví dụ như sau, không có điều gì thuận tiện hơn tôi có thể làm?Mẫu Django {% trans%} số nhiều

{% blocktrans count video.views.count as views %} 
The video has been viewed <span>{{ views }}</span> time 
{% plural %} 
The video has been viewed <span>{{ views }}</span> times 
{% endblocktrans %} 

Tôi cố gắng để làm như sau:

{% blocktrans %}time{% plural %}times{% endblocktrans %} 

Nhưng nó đã ném TemplateSyntaxError: 'blocktrans' doesn't allow other block tags (seen u'plural') inside it

+3

này làm cho nó rất khó khăn cho các dịch giả, như bạn đang buộc một Trật tự của các chữ; nếu bản dịch yêu cầu phải có dạng số nhiều ở phía trước '{{views}}' thì sao? Biểu hiện tiết lộ thực sự là con đường để đi. – bouke

Trả lời

12

Bạn quên count variable as variable_name trong thẻ blocktrans

Giá trị của biến sẽ được sử dụng để phát hiện nếu nó là số nhiều hay không.

{% blocktrans count variable as variable_name %} 
    time 
    {% plural %} 
    {{ variable_name }} times 
{% endblocktrans %} 
+0

Ah bây giờ tôi thấy :) Tôi vẫn cảm thấy như có một cách thuận tiện hơn so với điều này mặc dù: {% trans "Video đã được xem"%} {{video.views.count}} {% blocktrans đếm số lần xem video.views.count dưới dạng%} thời gian {% số nhiều%} lần {% endblocktrans%} – jmagnusson

+1

Liên kết tới tài liệu https://docs.djangoproject.com/en/dev/topics/i18n/translation/#std: templatetag-blocktrans – Gesias

-1

Bạn có thể sử dụng:

{% blocktrans with video.views.count|pluralize as foo and video.views.count as views %} 
The video has been viewed <span>{{ views }}</span> time{{ foo }} 
{% endblocktrans %} 
+2

... đó là đánh bại việc sử dụng các blocktrans. Nó tạo ra nhiều câu đố từ hơn. Tốt hơn là nên dùng giải pháp '{% plural%}'. – vdboor

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