Renderuję niektóre pluralization using the blocktrans tag; Oto odnośny fragment w pliku szablonu:Jak zachować odstępy między znacznikami {% blocktrans%} i {% mnoga%} bez powodowania błędów msgfmt?
{% blocktrans count choice_count=choice_count %}
You have {{ choice_count }} choice:
{% plural %}
You have {{ choice_count }} choices:
{% endblocktrans %}
Po uruchomieniu python manage.py makemessages --all
, to jest odpowiedni fragment w moim, na przykład django.po
plik dla en
:
msgid ""
"\n"
" You have %(choice_count)s choice:\n"
msgid_plural ""
"\n"
" You have %(choice_count)s choices:\n"
msgstr[0] "You have one choices:"
msgstr[1] "You have %(choice_count)s choice(s):"
Ale kiedy biegnę python manage.py compilemessages
, to jest komunikat o błędzie pojawia się:
$ ./manage.py compilemessages
processing file django.po in /home/yiqing/repos/training/site/training/locale/en/LC_MESSAGES
/home/yiqing/repos/training/site/training/locale/en/LC_MESSAGES/django.po:60: `msgid' and `msgstr[0]' entries do not both begin with '\n'
msgfmt: found 4 fatal errors
wiem, że to dlatego, że z nowej linii/przestrzeni w pliku szablonu, a ja wiedzieć, jak uzyskać „ok” go - kiedy zmienić fragment szablonu do, na przykład, tak:
{% blocktrans count choice_count=choice_count %}You have {{ choice_count }} choice:{% plural %}You have {{ choice_count }} choices:{% endblocktrans %}
i ponownie makemessages
, usuń znacznik fuzzy
z wiadomości, a następnie ponownie uruchom compilemessages
, kompiluje się dobrze.
Jednak moje pytanie brzmi, jak zachować pierwszą składnię szablonu i nadal móc kompilować wiadomości, ponieważ znacznie poprawia czytelność kodu w plikach szablonów.
Czy próbowałeś użyć znacznika ['{% spaceless%}'] (https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#spaceless)? – guival