2010-05-28 19 views
10

Nach this section in der Django-Dokumentation sollte ich {% blocktrans %} für Fälle verwenden, in denen ich Pluralisierungen übersetzen muss. Aber, mit einem Beispiel wie dem folgenden, ist es nicht bequemer, was ich tun kann?Django Vorlage {% trans%} Pluralisierung

{% 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 %} 

Ich habe versucht, die folgendes zu tun:

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

Aber es warf TemplateSyntaxError: 'blocktrans' doesn't allow other block tags (seen u'plural') inside it

+3

Dies macht es sehr schwer für Übersetzer, wie Sie eine Ordnung von Wörtern zwingen; Was ist, wenn die Übersetzung die Pluralform vor den {{views}} 'haben soll? Der ausführliche Ausdruck ist wirklich der richtige Weg. – bouke

Antwort

12

Sie haben vergessen, die count variable as variable_name im blocktrans Tag

Der Wert dieser Variablen wird verwendet werden, Finde heraus, ob es im Plural ist oder nicht.

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

Ah jetzt sehe ich :) Ich habe immer noch das Gefühl, dass es einen bequemeren Weg als das aber geben sollte: {% trans "Das Video wurde angesehen"% {{video.views.count}} {% blocktrans zählt video.views.count als views%} time {% plural%} mal {% endblocktrans%} – jmagnusson

+1

Link zu docs https://docs.djangoproject.com/en/dev/topics/i18n/translation/#std: templatetag-blocktrans – Gesias

-1

können Sie verwenden:

{% 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

... das besiegt die Verwendung von blocktrans. Stattdessen werden mehr Worträtsel erstellt. Besser gehen Sie für die '{% Plural%}' Lösung. – vdboor