You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python变量字符串传入gettext的_()函数?

问题解答:变量字符串传入gettext函数_()的问题修复

核心结论

不能直接将变量字符串传入_()让pygettext识别并提取,因为pygettext是静态代码扫描工具,仅能识别作为_()参数的字符串字面量,无法解析变量内部的动态内容。

修复方案

方案1:直接使用字符串字面量调用_()

将需要翻译的字符串直接写在_()的参数中,pygettext会直接提取该字符串:

print(_('Hello, World!'))

运行pygettext后,生成的.po文件中会自动包含:

msgid "Hello, World!"
msgstr ""

方案2:先通过_()处理字面量,再赋值给变量

如果需要复用翻译后的字符串,可以先将字面量传入_(),再把返回结果赋值给变量,兼顾复用需求和提取需求:

my_str = _('Hello, World!')
print(my_str)

方案3:处理动态占位符字符串

如果字符串包含动态内容(如占位符),同样需要将带占位符的字面量传入_(),后续再做格式化:

# 定义带占位符的可翻译字面量
greeting_template = _('Hello, %s!')
# 使用时填充动态内容
print(greeting_template % 'World')

pygettext会提取'Hello, %s!'作为msgid,后续翻译时只需针对模板字符串处理即可。

原理说明

pygettext的工作方式是静态遍历代码文本,查找_()函数调用,并提取其中的字符串常量。它不会执行代码、也不会解析变量的运行时值,因此只有直接写在_()参数里的字符串字面量才能被识别并加入.po文件。

内容的提问来源于stack exchange,提问作者K.KLAI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:32:12