跳到内容

format-in-get-text-func-call (INT002)

源自 flake8-gettext 代码检查器。

作用

检查 gettext 函数调用中的 str.format 调用。

为什么这不好?

gettext API 中,gettext 函数(通常别名为 _)通过在翻译目录中查找其输入参数,返回其翻译。

使用格式化的字符串作为参数调用 gettext 可能会导致意外行为。由于格式化的字符串在函数调用之前被解析,因此翻译目录将查找格式化的字符串,而不是 str.format 样式的模板。

相反,格式化函数调用返回的值,而不是它的参数。

示例

from gettext import gettext as _

name = "Maria"
_("Hello, {}!".format(name))  # Looks for "Hello, Maria!".

建议改为

from gettext import gettext as _

name = "Maria"
_("Hello, %s!") % name  # Looks for "Hello, %s!".

参考