升级到WordPress 6.7,如果使用了多语言主题或插件,会发现语言加载失效。
经查是wp-includes目录中的l10n.php文件,在WordPress 6.7中发生了变化,原来加载语言代码被删除。
说明原文:
@since 6.7.0 Translations are no longer immediately loaded, but handed off to the just-in-time loading mechanism.
翻译后的大概意思:
@自6.7.0版本起,翻译不再立即加载,而是交由即时加载机制处理。
不过这个“即时加载机制”方法在官网没找到。
暂时解决办法:
对比6.6与6.7的l10n.php文件,把删除和修改的改回来,然后替换。
对于主题如原来加载语言代码类似:
load_theme_textdomain( 'begin', get_template_directory() . '/languages' );
可以改为:
if ( 'zh_TW' === get_locale() ) { // 繁体 load_textdomain( 'begin', get_template_directory() . '/languages/zh_TW.mo' ); } elseif ( 'en_US' === get_locale() ) { // 英文 load_textdomain( 'begin', get_template_directory() . '/languages/en_US.mo' ); } else { // 其它语言 //load_textdomain( 'begin', get_template_directory() . '/languages/default.mo' ); }
上面方法并非新的什么“即时加载机制”,这个加载语言的方法WP很早就有,依据后台的语言加载相应语言包。
WordPress这次改变语言加载方式目的应该是为了提搞网页加载速度,原来的:
load_theme_textdomain( 'begin', get_template_directory() . '/languages' );
会加载全部语言包,之后再根据当前语言加载相应翻译,如果语言包很多文件很大可能会影响加载速度。
这次改变,连著名的WOO商城插件也不能幸免,翻译失效...
至于目前最好的加载语言方法,本人没找到,有知道的也分享一下吧。
本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!
我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!