我在一个自定义的WordPress插件工作,但我不能让它多语言准备。
它确实正确地加载了主语言的.mo文件,但是当切换语言(使用WPML)时,它总是显示主语言的翻译(在本例中是德语)。所以当我使用英语时,它仍然显示德语翻译。
下面是我的代码:
在标题中:
/*
Plugin Name: MM Jobs
Plugin URI: http://example.com/
Description: Custom Jobs Plugin to create new Jobs
Version: 1.3.84
Author: Jekey
Author URI: http://example.com/
Text Domain: mm-jobs
Domain Path: /languages
*/
然后:
function mm_jobs_plugins_loaded() {
load_plugin_textdomain( 'mm-jobs', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mm_jobs_plugins_loaded', 0 );
.mo文件是正确的,因为它已经加载了德语翻译。/plugins/mm-jobs/languages/下的mm-jobs-en_US.mo或mm-jobs-de_DE.mo
你知道是什么引起的吗?
2条答案
按热度按时间6jygbczu1#
以防有人有同样的问题。我有
这会导致运行一个wp_core函数,在该函数中加载文本域,因此我的en_US.mo被de_DE.mo覆盖
我不知道为什么get_plugin_data()使用了错误的语言文件,它似乎为使用该函数的不同插件选择了正确的文件。
f5emj3cl2#
使用
init
操作挂接。加载插件翻译不应该在
plugins_loaded
操作期间完成,因为这太早了,会阻止其他语言相关的插件正确地与load_textdomain()
函数挂钩,并做任何他们想做的事情。调用load_plugin_textdomain()
应该延迟到init
操作。参考:https://developer.wordpress.org/reference/functions/load_plugin_textdomain/#div-comment-1568