Tôi đang hiển thị một số pluralization using the blocktrans tag; đây là đoạn mã có liên quan trong tệp mẫu:Làm cách nào để giữ khoảng trắng giữa các thẻ {% blocktrans%} và {% số nhiều%} mà không gây ra lỗi msgfmt?
{% blocktrans count choice_count=choice_count %}
You have {{ choice_count }} choice:
{% plural %}
You have {{ choice_count }} choices:
{% endblocktrans %}
Sau khi chạy python manage.py makemessages --all
, đây là đoạn mã có liên quan trong ví dụ của tôi, ví dụ: django.po
tập tin cho 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):"
Nhưng khi tôi chạy python manage.py compilemessages
, đây là thông báo lỗi tôi nhận được:
$ ./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
Tôi biết rằng đó là vì các dòng mới/khoảng trống trong file template, và tôi biết cách nhận "xung quanh" - khi tôi thay đổi đoạn mã mẫu thành, ví dụ: điều này:
{% blocktrans count choice_count=choice_count %}You have {{ choice_count }} choice:{% plural %}You have {{ choice_count }} choices:{% endblocktrans %}
Và chạy lại makemessages
, loại bỏ các fuzzy
đánh dấu từ các tin nhắn và sau đó chạy lại compilemessages
, nó biên dịch tốt.
Tuy nhiên, câu hỏi của tôi là cách giữ cú pháp mẫu đầu tiên và vẫn có thể biên dịch thư, vì nó cải thiện đáng kể khả năng đọc của mã trong tệp mẫu.
Các bạn đã thử bằng cách sử dụng [ '{% chốn%}' tag] (https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#spaceless)? – guival