Django国际化 - Gettext错误

5

正在使用Django构建网站。在下载gettext-0.19.8.tar.gz并将其放置于/Users/cohen/Downloads/gettext-0.19.8后,执行所有的步骤:./configure、make和sudo make installation。然而,在安装过程中出现了以下错误:

python manage.py makemessages -l en

一切在Gettext部分都运行得很顺利,直到安装的时候出了问题。 我使用的是MAC系统,Pycharm作为我的IDE。 请给予建议!
另外,有没有办法绕过Gettext的安装来生成消息?
谢谢!
xgettext: ./venv/lib/python3.6/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/webencodings/__init__.py:1: Unknown encoding "utf8". Proceeding with ASCII instead.
xgettext: Non-ASCII string at ./venv/lib/python3.6/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/webencodings/__init__.py:64.
          Please specify the source encoding through --from-code or through a comment
          as specified in http://www.python.org/peps/pep-0263.html.

为什么我会遇到这个错误?我无法使用这个命令进行正确的翻译。
我按照以下培训进行操作: Django国际化最简示例

http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones

https://gist.github.com/mbillard/1647940

稍后编辑: 在重新安装虚拟环境中的gettext之后,我遇到了这个错误:
make[4]: Nothing to be done for `install-exec-am'.
 ../build-aux/install-sh -c -d '/Users/cohen/PycharmProjects/gettext/share/doc/gettext/examples/build-aux'
 /usr/bin/install -c -m 644 ../build-aux/javacomp.sh.in ../build-aux/javaexec.sh.in ../build-aux/csharpcomp.sh.in ../build-aux/csharpexec.sh.in '/Users/cohen/PycharmProjects/gettext/share/doc/gettext/examples/build-aux'
 ../build-aux/install-sh -c -d '/Users/cohen/PycharmProjects/gettext/share/gettext'
 /usr/bin/install -c ../build-aux/config.rpath '/Users/cohen/PycharmProjects/gettext/share/gettext'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.

而且进行检查的结果如下: gettext-tools 0.19.8 的测试套件摘要
> ============================================================================
> # TOTAL: 198
> # PASS:  187
> # SKIP:  10
> # XFAIL: 0
> # FAIL:  1
> # XPASS: 0
> # ERROR: 0
> ============================================================================ See gnulib-tests/test-suite.log Please report to
> bug-gnu-gettext@gnu.org
> ============================================================================ make[7]: *** [test-suite.log] Error 1 make[6]: *** [check-TESTS] Error
> 2 make[5]: *** [check-am] Error 2 make[4]: *** [check-recursive] Error
> 1 make[3]: *** [check] Error 2 make[2]: *** [check-recursive] Error 1
> make[1]: *** [check-recursive] Error 1 make: *** [check] Error 2
4个回答

2
为了解决这个bug,你需要编辑出现错误的文件。在我的情况下,我进入了我的虚拟环境中的文件/venv/lib/python3.6/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/webencodings/__init__.py并且编辑了3个文件:

1.init.py
2. tests.py
3.x_user_defined.py

在它们的头部,我将字符串

utf8

改为了

utf-8.

这帮助我在Pycharm中创建消息。

祝你有美好的一天!


0

与其自己构建,我宁愿通过Homebrew进行安装 - 这样可以更轻松地在长期内进行维护:

brew install gettext

如果出现以下类似的错误提示:

警告:gettext 是 keg-only 的,必须使用 --force 进行链接

那么你需要运行以下命令:
brew link gettext --force

然后它应该可以正常工作。(如果仍然无法正常工作,请重建虚拟环境。)


0
你应该使用--ignore venv-i venv命令来忽略虚拟环境(在你的情况下是venv),如下所示运行,然后错误就会解决。*你可以查看我的回答详细解释为什么会出现这个错误:
python manage.py makemessages --ignore en venv

python manage.py makemessages -i en venv

以下命令也适用:
django-admin makemessages --ignore en venv

django-admin makemessages -i en venv

0

只需打开文件./venv/lib/python3.6/site-packages/pip-9.0.1-py3.6.egg/pip/_vendor/webencodings/__init__.py,并将第一行的"utf8"更改为"utf-8"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接