在一个本地化的程序中,我在主模块src/testgettext.py中使用gettext.install()。
文档(python3.10.7)说
gettext.install(domain,localedir=None,codeset=None,names=None)这将在Python的内置命名空间中安装函数_().
代码
import gettext
gettext.install("any")
de = gettext.translation('testgettext',localedir="src/locales", languages=['de'])
de.install()
print(_("Selected Files:"))
函数,从'src/locales/de/LC_MESSAGES/testgettext. po'生成'Ausgewählte Dateien:'。
然而,我得到警告“”是没有定义Pylance(reportUndefinedVariable)...在我最初的主文件中,这个“问题”出现了85次,把任何重要的问题都搞乱了。
插入_ = t.gettext
可以删除pylance-problem-message,但仅限于模块级别。python-gettext-docu:
这只将()放在模块的全局命名空间中,因此只影响此模块内的调用。所有其他模块也必须更改。
所以我的问题是为了在vcode中使用python gettext而没有关于'_()'的不必要的pylance警告,该怎么做?
顺便说一句:在eclipse/pydev中,代码运行没有任何问题。
2条答案
按热度按时间wz8daaqr1#
pylance的报告没有错,它不能检测到
_
是由gettext.install()
定义的,因此假设它是一个未定义的变量。您可以通过添加类型提示来指示此
_
是返回已翻译字符串的函数68de4m5k2#
最后I found the answer:
...你可能想告诉Pyright这些在运行时可用的额外符号。为此,可以添加一个名为
__builtins__.pyi
的本地类型存根文件在项目的基础中插入一个名为
__builtins__.pyi
的文件,其内容为_ = str
,pyright将解释为_
被评估为str
类型的全局符号。