Django makemessages ошибки Неизвестная кодировка "utf8" - PullRequest
12 голосов
/ 06 декабря 2010

Я искал здесь и 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 ]

19 голосов
/ 05 января 2018

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

Мой virtualenv находится в моем корневом каталоге django:

Вот дерево моего проекта:

DjangoDirectory:

  • my_env
  • Django_App1
  • Django_App2
  • ...
  • ...
  • manage.py

Когда я запускаю команду:

./manage.py makemessages -l fr 

Я получаю ту же ошибку:

Error: errors happened while running xgettext on __init__.py
...

На самом деле я заметил, что xgettext просматривал ВСЕ файлы в моей папке, а также файлы в my_env.

Итак, я нашел флаг -i, который игнорирует файлы или папки во время процесса makemessages

Итак, теперь с приведенной ниже командой она работает как чудо, и я больше не получаю ошибку.

./manage.py makemessages -l fr -i my_env

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

10 голосов
/ 16 августа 2011

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

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

4 голосов
/ 07 мая 2011

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

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

РЕДАКТИРОВАТЬ: проблема была исправлена ​​в источнике Django (по состоянию на май 2011 года).

...