Ошибка 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, но не удался.

Может кто-нибудь дать мне свет, чтобы решить эту проблему?: (

Спасибо, и с наилучшими пожеланиями!

3 ответа

На самом деле да, у меня уже были подобные проблемы с makemessages, потому что поверх каждого исходного файла я написал "# coding: utf8". Несмотря на то, что он работал с исходной компиляцией, мне пришлось заменить "utf8" на "utf-8" в каждом файле.

Если вы не привыкли к makemessages, позаботьтесь о функциях gettext, применяемых для форматирования строк, вам понадобятся строки, содержащие именованные параметры, когда имеется более одного заполнителя. "% s" является хорошим "% (max) s" тоже хорошо "% (min) s% (max) s" тоже "% s% s" не подходит.


Я создал билет для этого в http://code.djangoproject.com/ticket/15980.

Кажется, что это просто опечатка в коде Django, проблема заключается в том, что python рассматривает "utf8" как псевдоним для "utf-8", но xgettext этого не делает. Проблема по-прежнему существует в Django r16169 (05/06/11 12:49:06) в SVN.

EDIT: проблема была исправлена ​​сейчас в источнике Django (по состоянию на май 2011 года).


Я знаю, что это сообщение устарело, но сегодня у меня была такая же проблема, и мне потребовалось несколько часов, чтобы узнать, почему. Возможно, люди будут в одном и том же случае:

Мой 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

Надеюсь, что это поможет

licensed under cc by-sa 3.0 with attribution.