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 на нього не буде звертати уваги.