7

当我运行这个命令时:

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 文件创建文件。例如: for index.html, anindex.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

我已经有一个.poAr 文件,其中包含一些要翻译的文本,这是我在 2 个月前创建的,并且翻译得很好。

但是当我运行makemessages命令添加要翻译的新文本时,它给出了上述错误。

请问有什么想法吗?

4

3 回答 3

3

.html.py我对重复的文件有同样的问题。即使在我的静态文件夹中,我也得到了重复.txt.py的文件!并且该解决方案与 utf-8 无关。

我的问题是我django-admin makemessages -l <locale>项目级目录中执行。命令makemessagescompilemessages必须在app目录中执行。

locale附带说明一下,在执行命令之前,不要忘记先在应用程序内创建文件夹。还makemessages使用语言环境名称字符串(格式ll_LL为 ,国家/地区带有下划线和大写字母)而不是语言代码(格式为ll-ll,带有破折号且没有大写字母)执行命令

我希望这对其他人有所帮助,因为这是我在 stackoverflow 中发现的与此问题相关的唯一问题。

于 2019-06-13T15:44:36.267 回答
1

我找到了解决方案,我只是忘记了一些基础知识:p

问题出在模板名称中,我有两个名为的模板文件CritéreGlobale.htmlCritéreSpecifique.html问题是文件名称中的字符é,在我将名称编辑为CritereGlobale.htmlCritereSpecifique.html解决问题后,没有更多的 .html.py 文件,并且命令运行完美.

希望能帮助别人

于 2018-06-13T14:55:54.110 回答
0

代替:

gettext(u'Les appels à projet')

尝试:

gettext('Les appels à projet')

希望能帮助到你。

于 2018-05-28T10:22:26.430 回答