Ошибка Django makemessages Неизвестная кодировка "utf8"
Я искал здесь и Google! Но без успеха найти решение, я действительно noob с python, но мог бы установить python, отделенный от yum.
Теперь мне нужно перекомпилировать языковой пакет для системы OSQA, но получите это сообщение:
Error: errors happened while running xgettext on __init__.py
xgettext: ./Django-1.2.3/tests/regressiontests/views/__init__.py:1: Unknown encoding "utf8". Proceeding with ASCII instead.
xgettext: Non-ASCII string at ./Django-1.2.3/tests/regressiontests/views/__init__.py:7.
Please specify the source encoding through --from-code or through a comment
as specified in http://www.python.org/peps/pep-0263.html.
Я попытался, но не смог его решить, установить кодировку в utf-8 в файле manage.py, но не удался.
Может кто-нибудь дать мне свет, чтобы решить эту проблему?: (
Спасибо, и с наилучшими пожеланиями!
Ответы
Ответ 1
На самом деле да, у меня уже были подобные проблемы с makemessages, потому что поверх каждого исходного файла я написал "# coding: utf8". Несмотря на то, что он работал с исходной компиляцией, мне пришлось заменить "utf8" на "utf-8" в каждом файле.
Если вы не привыкли к makemessages, позаботьтесь о функциях gettext, применяемых для форматирования строк, вам понадобятся строки, содержащие именованные параметры, когда имеется более одного заполнителя.
"% s" является хорошим
"% (max) s" тоже хорошо
"% (min) s% (max) s" тоже
"% s% s" не подходит.
Ответ 2
Я создал билет для этого в http://code.djangoproject.com/ticket/15980.
Кажется, что это просто опечатка в коде Django, проблема заключается в том, что python рассматривает "utf8" как псевдоним для "utf-8", но xgettext этого не делает. Проблема по-прежнему существует в Django r16169 (05/06/11 12:49:06) в SVN.
EDIT: проблема была исправлена сейчас в источнике Django (по состоянию на май 2011 года).
Ответ 3
Я знаю, что это сообщение устарело, но сегодня у меня была такая же проблема, и мне потребовалось несколько часов, чтобы узнать, почему. Возможно, люди будут в одном и том же случае:
Мой virtualenv находится в корневом каталоге django:
Вот мое дерево проекта:
DjangoDirectory:
- my_env
- Django_App1
- Django_App2
- ...
- manage.py
Когда я запускаю команду:
./manage.py makemessage -l fr
Я получаю ту же ошибку:
Error: errors happened while running xgettext on __init__.py
...
Фактически, я заметил, что xgettext просмотрел ВСЕ файлы в моей папке, а также файлы в my_env.
Итак, я нашел флаг -i, который игнорирует файлы или папки во время процесса makemessages
Итак, теперь с помощью приведенной ниже команды он работает как шарм, и я больше не получаю ошибку.
./manage.py makemessage -l fr -i my_env
Надеюсь, что это поможет