添加.mo和.po文件后WordPress主题仍无法翻译问题排查
以下是导致你的立陶宛语翻译无法生效的常见原因,按优先级排查:
文本域与文件名不匹配
WordPress加载主题翻译文件时,默认会寻找格式为{text-domain}-{locale}.mo的文件。你当前的文件名是lt_LT.mo,但文本域是simppple,正确的文件名应该是simppple-lt_LT.mo(对应PO文件为simppple-lt_LT.po)。将文件名修改后,再测试是否生效。文本域拼写不一致
检查主题代码中所有翻译函数(如__('文本内容', 'simppple')、_e('文本内容', 'simppple'))的第二个参数是否与你使用的simppple完全一致,包括字母数量(比如是否多写/少写了p)。如果主题内部用的是其他文本域(比如simpple),你的翻译文件会无法匹配。翻译文件路径错误
确认/lang目录确实位于主题根目录下。如果你的主题是子主题,需要将get_template_directory()替换为get_stylesheet_directory(),因为前者指向父主题路径,后者才是子主题的路径。修改后的加载代码应为:function my_theme_load_theme_textdomain() { load_theme_textdomain( 'simppple', get_stylesheet_directory() . '/lang' ); } add_action( 'after_setup_theme', 'my_theme_load_theme_textdomain' );缓存干扰
清除以下缓存后再测试:- WordPress缓存插件(如WP Rocket、W3 Total Cache)的缓存
- 服务器端的OPcache或页面缓存
- 浏览器的本地缓存(可通过Ctrl+F5强制刷新)
翻译函数未正确调用
检查主题中的英文文本是否使用了WordPress标准翻译函数。如果文本是硬编码(直接写死英文,没有包裹在__()或_e()中),翻译文件无法生效。MO文件编译异常
重新用Poedit打开lt_LT.po文件,确认所有需要翻译的条目都已完成翻译,然后点击Poedit的「编译为MO」按钮,重新生成MO文件,替换原文件后测试。站点语言包未正确安装
进入WordPress后台「设置-常规」,确认站点语言已切换为立陶宛语(lt_LT),且语言包已成功安装。如果语言包未安装,WordPress会自动 fallback 到英文。加载钩子优先级问题
尝试提高文本域加载函数的优先级,确保它在主题其他功能之前执行:function my_theme_load_theme_textdomain() { load_theme_textdomain( 'simppple', get_template_directory() . '/lang' ); } add_action( 'after_setup_theme', 'my_theme_load_theme_textdomain', 1 );
内容的提问来源于stack exchange,提问作者E R

