WordPress 6.7会造成主题和插件语言加载失效

知更鸟
知更鸟
站长
2317
文章
0
粉丝
WordPress评论18阅读模式

升级到WordPress 6.7,如果使用了多语言主题或插件,会发现语言加载失效。

经查是wp-includes目录中的l10n.php文件,在WordPress 6.7中发生了变化,原来加载语言代码被删除。

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商城插件也不能幸免,翻译失效...

至于目前最好的加载语言方法,本人没找到,有知道的也分享一下吧。

 

本站文章大部分为原创,用于个人学习记录,可能对您有所帮助,仅供参考!

weinxin
我的微信
微信号已复制
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
 
知更鸟
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

拖动滑块以完成验证