December 23 2011
Помилка UnicodeDecodeError під час створення файлів локалізації командою django-admin makemessages
Для створення .po-файлів у Django використовується команда:
django-admin makemessages -l uk
де uk - то код мови, для якої потрібно створити файл локалізації. В даному випадку - українська.
При спробі оновлення файлу локалізації одного зі своїх django-додатків я зіткнувся з такою помилкою:
File "/usr/local/lib/python2.6/dist-packages/django/utils/translation/__init__.py",
line 127, in templatize
return _trans.templatize(src, origin)
File "/usr/local/lib/python2.6/dist-packages/django/utils/translation/trans_real.py",
line 450, in templatize
content = u''.join(comment)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in
position 6: ordinal not in range(128)
Виявляється, проблема в тому, що десь у шаблонах були коментарі написані кирилицею. Знаходились вони між шаблонними тегами {% comment %} {% endcomment %}, які і призначені для коментування коду шаблону.
Щось типу:
{% comment %}
коментар написаний кирилицею
{% endcomment %}
Якщо прибрати кирилицю з блоку коментарів - то все буде ОК. Або ж написати коментар у вигляді:
{# коментар написаний кирилицею #}
Тоді makemessages на нього не буде звертати уваги.

