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

PHP中gettext的__函数无法翻译,是否需替换为gettext()?

为什么__()不生效而gettext()可以?

嘿,这个问题我之前也踩过坑!其实核心原因很简单:原生PHP里并没有__()这个函数——你在文章里看到的__()大多是WordPress、Laravel这类框架自定义的gettext别名,而非PHP gettext扩展的原生语法。

先理清原生gettext的内置别名

PHP的gettext扩展只内置了一个官方别名:单下划线的_(),它和gettext()完全等价。也就是说,你直接把代码改成这样就能正常工作:

echo _("Test 2"); // 这行和gettext("Test 2")效果完全一致

让__()生效的简单解决办法

如果你习惯用双下划线的__(),只需要自己定义一个全局函数就行,把它作为gettext()的简单包装:

// 可以把这段代码放在你的公共配置文件或入口文件开头
function __($message) {
    return gettext($message);
}

添加完这个函数后,__("Test 2")就会和gettext("Test 2")一样正常返回翻译内容了。

额外提醒

如果之后你切换到某个Web框架开发,框架自带的__()可能会包含更多附加逻辑(比如处理翻译域、上下文或者多语言切换),但在原生PHP的纯gettext场景下,必须自己定义这个函数才能使用。

完全没必要把所有__()替换成gettext(),加个简单的函数定义就能搞定问题啦!

内容的提问来源于stack exchange,提问作者neggenbe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:34