插件后台菜单显示“Book Manager”,语言包里有对应中文,前台短代码文案已经翻译,只有后台没变。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,语言包在 init 之后才 load_plugin_textdomain,后台菜单在 admin_menu 阶段已经生成。.mo 文件名写成 book-manager-zh_CN.mo 与 textdomain 不一致时也不会加载。

「后台菜单不翻译」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。改完顺手把文档补一句,省得下次自己重新推一遍。

add_action('plugins_loaded', function () {
    load_plugin_textdomain('book-manager', false, dirname(plugin_basename(__FILE__)) . '/languages');
});

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

具体做法是,把加载语言包挂到 plugins_loaded;确认文件名是 zh_CN.mo 且目录是 languages;检查 __() 的 textdomain 与加载时一致。

最后用这个标准收尾,后台菜单显示中文,切到英文语言后菜单跟着变回英文。

作者 9823189