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

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

升级到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文件,把删除和修改的改回来,然后替换。


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

不想修改程序文件的方法

不修改程序文件,想让主题和插件兼容WordPress 6.7,可以参考下面的方法:

主题如原来加载语言代码类似:

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' );
}

同样,插件原来加载语言的代码如果类似:

load_plugin_textdomain( 'begin', false, basename( dirname( __FILE__ ) ) . '/languages' );

可以改为:

if ( 'zh_CN' === get_locale() ) {
    load_textdomain( 'begin', plugin_dir_path( __FILE__ ) . 'languages/zh_CN.mo' );
} elseif ( 'en_US' === get_locale() ) {
    load_textdomain( 'begin', plugin_dir_path( __FILE__ ) . 'languages/en_US.mo' );
} else {
    // 可选择在其他语言环境下加载默认的翻译文件
    // load_textdomain( 'begin', plugin_dir_path( __FILE__ ) . 'languages/default.mo' );
}

上面方法并非新的什么“即时加载机制”,这个加载语言的方法WP很早就有,依据后台的语言加载相应语言包。

WordPress这次改变语言加载方式目的应该是为了提搞网页加载速度,原来的:

load_theme_textdomain( 'begin', get_template_directory() . '/languages' );

会加载全部语言包,之后再根据当前语言加载相应翻译,如果语言包很多文件很大可能会影响加载速度。

这次改变,连著名的WOO商城插件也不能幸免,翻译失效...

大概的解决方法:

主题

function zm_theme_setup() {
	load_theme_textdomain( 'begin', get_template_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'zm_theme_setup' );

插件

function load_zm_plugin_textdomain() {
load_plugin_textdomain( 'begin', false, plugin_dir_path( __FILE__ ) . 'languages' );
}
add_action( 'init', 'load_zm_plugin_textdomain' );

 

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

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

发表评论

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

拖动滑块以完成验证