2010-12-06 22 views
11

J'ai cherché ici et google aussi! Mais aucun succès à trouver la solution, je suis vraiment noob avec python mais pourrait être capable d'installer python séparé de yum.Django makemessages errors Codage inconnu "utf8"

Maintenant, je dois recompiler le pack de langue pour le système OSQA, mais ce message:

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. 

I tryed, mais sans succès pour le résoudre, encode fixé à utf-8 dans la gestion fichier .py mais pas de succès aussi.

Quelqu'un peut-il me donner une lumière pour le résoudre? :(

Merci et meilleures salutations!

+0

Avez-vous essayé de faire ce qu'il a suggéré? –

+0

Ouais, j'ai essayé de faire ce xgettext --from-code = utf-8 mais je n'ai pas eu de succès parce qu'il me demande le fichier d'entrée, mais je ne peux pas imaginer que les fichiers sorcières sont liés à ceci = ( merci –

+2

message, ne pas arrêter après les premiers mots ... –

Répondre

4

J'ai créé un ticket pour cela à http://code.djangoproject.com/ticket/15980.

Il semble être une simple faute de frappe dans le code Django, le problème étant que traite python " utf8 "comme un alias pour" utf-8 ", mais xgettext ne fonctionne pas Le problème persiste à partir de Django r16169 (05/06/11 12:49:06) dans SVN

EDIT: Le problème a été corrigé maintenant dans la source Django (en mai 2011)

9

J'ai déjà eu des problèmes similaires avec makemessages, car en plus de chaque fichier source, j'ai écrit "# coding: utf8". Même si cela a fonctionné avec la compilation source, j'ai dû remplacer "utf8" par "utf-8" dans chaque fichier. Si vous n'êtes pas habitué à faire des makemessages, prenez soin des fonctions gettext appliquées aux chaînes de format, vous aurez besoin de chaînes pour contenir les paramètres nommés quand il y a plus d'un espace réservé. "% s" est bon "% (max) s" est bon aussi "% (min) s% (max) s" trop "% s% s" n'est pas correct.

2

Je sais que cet article est obsolète mais j'ai eu le même problème aujourd'hui, et il m'a fallu des heures pour savoir pourquoi. Peut-être que les gens seront dans le même cas:

Mon virtualenv est dans mon django répertoire racine:

Voici mon arbre projet:

DjangoDirectory:

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

Quand je lance la commande:

./manage.py makemessage -l fr 

je reçois la même erreur:

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

En fait, je remarquai que xgettext a regardé dans tous les fichiers dans mon dossier, ainsi que des fichiers dans my_env.

Je trouve le drapeau -i qui ignore les fichiers ou les dossiers au cours du processus de makemessages

Alors maintenant, avec la commande ci-dessous, il fonctionne comme un charme et je ne suis pas plus l'erreur.

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

espère que cela aidera

+0

./manage.py makemessage -l fr -i my_env A travaillé pour moi, MERCI! – Reynald0