zez*_*llo 8 python gettext python-3.x pyflakes flake8
在我的项目的主脚本中,gettext
安装_()
在其他模块中用于翻译的函数(如in print(_('Something to translate'))
).
正如文件所述:
_()函数[是]安装在Python的内置命名空间中,因此可以在应用程序的所有模块中轻松访问它.
所以,一切都运行良好.
唯一的问题:flake8
显示错误(实际上由PyFlakes返回):
$ flake8 *.py
lib.py:2:12: F821 undefined name '_'
main_script.py:8:7: F821 undefined name '_'
Run Code Online (Sandbox Code Playgroud)
这是正常的,因为_
在main_script.py和lib.py中确实没有定义.
.
??? lib.py
??? locale
? ??? de
? ??? LC_MESSAGES
? ??? myapp.mo
? ??? myapp.po
??? main_script.py
Run Code Online (Sandbox Code Playgroud)
lib.py包含这个:
def fct(sentence):
return _(sentence)
Run Code Online (Sandbox Code Playgroud)
和main_script.py这个:
#!/usr/bin/env python3
import gettext
import lib
gettext.translation('myapp', 'locale', ['de']).install()
print(_('A sentence'))
print(lib.fct('A sentence'))
Run Code Online (Sandbox Code Playgroud)
和myapp.po包含:
msgid ""
msgstr ""
"Project-Id-Version: myapp\n"
msgid "A sentence"
msgstr "Ein Satz"
Run Code Online (Sandbox Code Playgroud)
(由poedit编译以生成mo文件).
如上所述,主脚本确实有效:
$ ./main_script.py
Ein Satz
Ein Satz
Run Code Online (Sandbox Code Playgroud)
重要提示:我正在寻找一个在脚本的工作既是一个解决方案gettext.install()
被称为和所有其他模块不需要调用 gettext.install()
.否则,结构可能更简单,因为_()
从main_script.py 调用足以触发F821.
# noqa
在每行末尾添加注释_()
--ignore
F821(不想这样做,因为这在其他情况下很有用) 归档时间: |
|
查看次数: |
6202 次 |
最近记录: |