Команда makemessages приводит к файлам html.py и UnicodeDecodeError - PullRequest
0 голосов
/ 27 мая 2018

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

django-admin makemessages -l ar

Это выдает эту ошибку:

Traceback (most recent call last):
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\utils\encoding.py", line 65, in force_text
s = str(s, encoding, errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 3107: invalid continuation byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Ahmed\AppData\Local\Programs\Python\Python36-32\Scripts\django-admin.exe\__main__.py", line 9, in <module>
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site- packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\__init__.py", line 365, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site- packages\django\core\management\base.py", line 288, in run_from_argv
self.execute(*args, **cmd_options)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\base.py", line 335, in execute
output = self.handle(*args, **options)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\commands\makemessages.py", line 384, in handle
potfiles = self.build_potfiles()
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\commands\makemessages.py", line 426, in build_potfiles
self.process_files(file_list)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\commands\makemessages.py", line 522, in process_files
self.process_locale_dir(locale_dir, files)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\commands\makemessages.py", line 590, in process_locale_dir
msgs, errors, status = popen_wrapper(args)
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\core\management\utils.py", line 23, in popen_wrapper
force_text(output, stdout_encoding, strings_only=True, errors='strict'),
File "c:\users\ahmed\appdata\local\programs\python\python36-32\lib\site-packages\django\utils\encoding.py", line 69, in force_text
raise DjangoUnicodeDecodeError(s, *e.args)
django.utils.encoding.DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 3107: invalid continuation byte. You passed in 

Помимо этой ошибки, html.py файлы создаются для каждого html-файла.Например: для index.html в папке шаблонов создается index.html.py.Эти html.py файлы содержат только символы «X» и «B» с текстом для перевода.

Например:

BBBBBBBB
BBBBB BBBBBBB
    XXXX XXXXXXXXXXXXXXXXXXXXX
        XXXX XXXXXXXXX XXXXX XXX
        XXXX XXXXXXXXXXXXXXXXXX
              XXXX XXXXXXXXXXXXX
                      XXXX XXXXXXXXXXXXXXXXXX XX
                          XXX XXXXXXXXXXXXXX gettext(u'Les appels à projet') XXXXX
                        XXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
                            XXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX
                                XXX XXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
                                XXXXXX XXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXX
                                XXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
                            XXXXX
                        XXXXXX
                      XXXXXX
                      XXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXX
                        XXXX XXXXXXXXXXXXXXXXXXXXXXXXX
                          XXXXXX XXXXXXXXXXXX XXXXXXXXXXXX XXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX
                                XXXXXXX
                                    XXXX
                                        XXXX gettext(u'Appel à projet') XXXXX
                                        XXXX gettext(u'Date de lencement') XXXXX
                                        XXXX gettext(u'Date de clature') XXXXX
                                        XXXX gettext(u'Année budjitaire') XXXXX
                                        XXXX gettext(u"N° d'apppel à projet") XXXXX
                                        XXXX gettext(u"Etat d'appel") XXXXX
                                        XXXX XXXX gettext(u'Action') XXXXX XXX
                                    XXXXX
                                XXXXXXXX
                                XXXXXXX
                                BBB BBBBBB BB BBBBBBBBBBB
                                    XXXX
                                        XXXXXXXXX
                                        XXXXXXXXX
                                        XXXXXXXXX

У меня уже есть файл .po для Ar с текстом для перевода, который я уже создал 2 месяца назад, и он переведен отлично.

Но когда я запускаю команду makemessages, чтобы добавить новый текст для перевода, она выдает вышеуказанную ошибку.

Есть идеи, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Я нашел решение, я просто забыл некоторые основы: p

Проблема в имени шаблона, у меня есть два файла шаблона с именами CritéreGlobale.html и CritéreSpecifique.html, проблема в символе éв именах файлов, после того как я отредактировал имена до CritereGlobale.html и CritereSpecifique.html, проблема решена, и больше нет файлов .html.py, и команда работает отлично.

Надеюсь, что кому-то еще поможет

0 голосов
/ 13 июня 2019

У меня была такая же проблема с дублированными файлами .html.py.Я также получил дубликаты .txt.py файлов, даже в моей статической папке!И решение не было связано с utf-8.

Моя проблема заключалась в том, что я выполнил django-admin makemessages -l <locale> на уровне проекта директории.Команды makemessages и compilemessages должны выполняться внутри директории app .

В качестве примечания, не забудьте сначала создать папку locale внутри приложенияперед выполнением команд.Также выполните команду makemessages, используя строку имя локали (с формой ll_LL, с подчеркиванием и заглавной буквой для страны) и не код языка (с формой ll-ll, с тире и без прописных букв)

Надеюсь, это поможет другим людям, так как это был единственный вопрос, который я нашел в stackoverflow, связанный с этой проблемой.

0 голосов
/ 28 мая 2018

Вместо:

gettext(u'Les appels à projet')

Попробуйте:

gettext('Les appels à projet')

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

...