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

主题开发中翻译函数__e()等是否必须传入英文字符串?

WordPress主题翻译:非英文原始字符串的可行性

嘿,这个问题问到点子上了!我来给你详细捋清楚:

技术上可行,但非常不推荐

WordPress的__()、_e()这些翻译函数本身并不限制你传入非英文字符串——比如你写_e('строчка','textdomain'),只要翻译文件配置正确,是可以正常匹配到对应翻译的。

但为什么不推荐这么做呢?核心原因是WordPress的国际化(i18n)体系是围绕「英文作为基准源语言」设计的,实际操作中会遇到不少麻烦:

  • 工具兼容性问题:大多数翻译工具(比如Poedit)默认以英文作为源语言,处理非英文源文本时可能出现字符编码识别、字符串匹配的小问题,增加翻译流程的复杂度。
  • 维护成本飙升:gettext系统是通过「源文本字符串」匹配翻译的,如果你的源文本是俄语,之后要修改这个字符串的话,所有翻译文件里对应的msgid都得同步修改,非常繁琐。
  • 协作障碍:大部分主题开发者、翻译贡献者都习惯以英文作为基准语言,用非英文作为源文本会让其他参与协作的人难以理解和上手。

官方推荐的最佳实践

按照WordPress的标准流程,正确的做法是:

  1. 所有原始字符串都用英文编写,比如:
    _e('String', 'textdomain')
    
  2. 生成以英文为源语言的.pot模板文件
  3. 针对不同语言创建翻译文件(比如俄语的.po/.mo),在其中将msgid "String"对应翻译为msgstr "строчка"

这样做完全贴合WordPress生态,工具支持完善,维护和协作都顺畅很多。

如果非要用非英文作为源语言(谨慎尝试)

如果你坚持要用非英文作为原始字符串,需要注意这几点:

  • 确保主题的文本域加载正确:
    load_theme_textdomain('textdomain', get_template_directory() . '/languages');
    
  • 使用翻译工具(比如Poedit)时,手动设置源语言为你使用的非英文(比如俄语)
  • 翻译文件中的msgid必须和代码里的非英文字符串完全一致,才能匹配到翻译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:13:54