我正在为我的项目添加语言翻译支持。代码在Python上,在html文件中有jinja2和Javascript。
我试图使用Babel进行翻译,但它并没有认识到jinja2的提取方法。也许我使用的名称不正确。
这是我的ini文件:
# Extraction from Python source files
[python: **.py]
# Extraction from Jinja2 template files
[jinja2: **.html]
# Extraction from JavaScript files
[javascript: **.js]
extract_messages = $._, jQuery._
这是我收到的错误;
C:\>python Babel-0.9.6/babel/messages/frontend.py extract --project=GV --version=1 --no-location -o locale\messages.pot -F babel.ini frontend te
mplates
extracting messages from frontend\__init__.py
INFO:babel:extracting messages from frontend\__init__.py
...
Traceback (most recent call last):
File "Babel-0.9.6/babel/messages/frontend.py", line 1208, in <module>
main()
File "Babel-0.9.6/babel/messages/frontend.py", line 1107, in main
return CommandLineInterface().run(sys.argv)
File "Babel-0.9.6/babel/messages/frontend.py", line 651, in run
return getattr(self, cmdname)(args[1:])
File "Babel-0.9.6/babel/messages/frontend.py", line 912, in extract
for filename, lineno, message, comments in extracted:
File "c:\Python27\lib\site-packages\babel-0.9.6-py2.7.egg\babel\messages\extract.py", line 172, in extract_from_dir
strip_comment_tags):
File "c:\Python27\lib\site-packages\babel-0.9.6-py2.7.egg\babel\messages\extract.py", line 202, in extract_from_file
strip_comment_tags))
File "c:\Python27\lib\site-packages\babel-0.9.6-py2.7.egg\babel\messages\extract.py", line 271, in extract
raise ValueError('Unknown extraction method %r' % method)
ValueError: Unknown extraction method 'jinja2'
Press any key to continue . . .
有什么想法吗? 谢谢, 迦底
答案 0 :(得分:14)
我看到你的问题仍未得到答复。您的问题与重新安装我的开发环境后的问题类似:
$ pybabel extract -F babel.cfg -o messages.pot .
extracting messages from admin.py
:
extracting messages from templates/404.html (extensions="jinja2.ext.autoescape,jinja2.ext.with_")
Traceback (most recent call last):
File "/usr/local/bin/pybabel", line 9, in <module>
load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')()
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 1107, in main
return CommandLineInterface().run(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 651, in run
return getattr(self, cmdname)(args[1:])
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/frontend.py", line 912, in extract
for filename, lineno, message, comments in extracted:
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 171, in extract_from_dir
strip_comment_tags):
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 201, in extract_from_file
strip_comment_tags))
File "/usr/local/lib/python2.7/dist-packages/Babel-0.9.6-py2.7.egg/babel/messages/extract.py", line 270, in extract
raise ValueError('Unknown extraction method %r' % method)
ValueError: Unknown extraction method 'jinja2'
原来我忘了安装jinja2。由于服务器环境已安装,我没有先注意到它。在installing jinja2之后:
$ sudo pip install jinja2
提取完成:
$ pybabel extract -F babel.cfg -o messages.pot .
extracting messages from admin.py
:
extracting messages from test/item_tests.py
writing PO template file to messages.pot
答案 1 :(得分:2)
Babel依赖于在egg信息中设置的jinja2入口点。
要解决此问题,请在cfg文件中进行更改:
# Extraction from Jinja2 template files
[jinja2: **.html]
到那个:
# Extraction from Jinja2 template files
[jinja2.ext:babel_extract[i18n]: **.html]
答案 2 :(得分:1)
我有同样的问题。我通过将setuptools从20.7.0升级到更新版本来解决它:
sudo pip install --upgrade setuptools