如何在我的WordPress插件的类构造函数中翻译一些东西?

时间:2020-09-14 作者:Johnny97

我有个问题。我目前正在开发一个插件,包括检查依赖项。因此,在调用所有其他init方法之前,我在插件根类中包含了一个检查:

public function __construct() {
    $this->init_core_hooks();

    if ( ! Pmx_Dependencies::get_instance()->is_loadable() ) {
        return;
    }

    $this->init_classes();
}

private function init_core_hooks(): void {
    add_action( \'plugins_loaded\', [ $this, \'plugins_loaded_action\' ] ); // Here I\'m loading my translation files
}
问题是,如果缺少依赖项,我会向WordPress添加一个管理通知,但它不会被翻译:

public function __construct() {
    if ( ! function_exists( \'get_plugins\' ) || ! function_exists( \'is_plugin_active\' ) ) {
        require_once ABSPATH . \'wp-admin/includes/plugin.php\';
    }
    if ( ! function_exists( \'wp_create_nonce\' ) ) {
        require_once ABSPATH . WPINC . \'/pluggable.php\';
    }
    if ( $this->is_yoast_installed() ) {
        $admin_notice = [
            \'type\'    => \'error\',
            \'content\' => __( \'An error occured\', \'pmx\' )
        ];
        $this->add_admin_notice( $admin_notice );
    }
}
我发现翻译还没有准备好,因为在我添加缺少某些内容的通知后,调用了我初始化翻译文件的挂钩。。。

那么,我应该如何处理这一问题,同时遵循在WordPress中加载文本文件的说明??

https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#loading-text-domain

谢谢你的帮助!

1 个回复
SO网友:sMyles

您应该在after_setup_theme 之后立即调用load_textdomain

http://rachievee.com/the-wordpress-hooks-firing-sequence/