如何创建不同语言的自定义后台管理菜单?

时间:2020-04-05 作者:Joe

所以我在网上找不到关于这个主题的任何东西。

我所做的:根据https://webkul.com/blog/how-to-add-menu-in-wordpress-admin-panel/, 所以这一切都很好。

我需要的是:如果我更改了后端的语言(通过wordpress后端中的用户设置),每个管理菜单都会被翻译成新的(选定的)语言,但我的自定义管理菜单除外,它当然仍然以英语显示。我的问题是:我需要如何/在哪里存储其他语言的自定义管理菜单,以便根据为后端选择的语言更改其语言??

Update: 好的,与此同时,我开发了一个应该完成的插件,并学习了所有关于它的东西。锅采购订单和。mo文件。现在唯一缺少的是国际化只有在我将。mo和。po文件放入根wp\\u content/languages/plugins目录,尽管我使用了:

if ( ! class_exists( \'MyPlugin\' ) ) {

  // Used class for plugin configuration to avoid naming collision
  class MyPlugin {

    // Used hooking functions on class constructor
    public function __construct() {

      // Hook Admin Menu Creation callback onto admin_menu action hook
      add_action( \'admin_menu\', array( $this, \'create_admin_menus\' ) );

      // Load Plugins Text Domain
      add_action(
        \'plugins_loaded\',
        array( $this, \'my_plugin_load_plugin_textdomain\' )
      );

    } // end of constructor function

    // Define corresponding callback functions

    public function create_admin_menus() {
      // Admin Menu code, which worked successfully

    } // end of create_admin_menus callback definition

    public function my_plugin_load_plugin_textdomain() {
      load_plugin_textdomain(
        \'my-plugin\',
        false,
        plugin_dir_path(__FILE__).\'languages/\'
      );

    } // end of my_plugin_load_plugin_textdomain function definition

  } // end of class MyPlugin definition

} // end of check if MyPlugin class exists

// Initiate class object
new MyPlugin;
我错过了什么?这可能是由于polylang插件(我唯一使用atm的插件)。我仔细检查了所有的文本域等。它们都很好,指定的路径也应该很好,所以我如何才能确保MyPlugin的国际化与。mo文件在wp内容/插件/我的插件/语言/目录中,而不是在wp内容/语言/插件/目录中?

目前发生的情况是,本地化字符串以英语显示(因此找不到翻译),但在复制时已成功且完美地翻译。采购订单和。mo文件放入wp-content/languages/plugins/directory。

P、 S:非常感谢汤姆已经给我的提示,学习你告诉我的东西是完全值得的!

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您需要使用国际化API,这些API允许您将硬编码字符串替换为本地化版本,例如:。


<p>Hello world</p>
与之相比:

<p><?php _e( \'Hello world\', \'joes_plugin\' ); ?></p>
然后,您可以使用.po/.mo/.pot 提供备选方案的文件,例如,带有法语翻译的文件、带有俄语的文件等。

您需要在主题/插件(joes_plugin 在上述示例中),以及域路径,以便WP知道要查找翻译文件的文件夹。你还需要打电话load_plugin_textdomainplugins_loaded

以下是国际化API手册:

https://developer.wordpress.org/apis/handbook/internationalization/

以及插件页面:

https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/

对于生成本地化文件本身:

https://developer.wordpress.org/plugins/internationalization/localization/

每一个问题本身都是一个巨大的主题,因此我建议就具体部分提出多个新的后续问题

请注意,此API不能用于转换数据库中的内容,您不应该将动态变量传递到这些API中。对于多语言前端,您需要一个插件

相关推荐

Wp-admin/admin-ajax.php 400(错误请求)插件

wordpress文件管理ajax有一个奇怪且令人沮丧的行为。php,当我发出ajax请求时,它返回一个错误的404错误请求。function rp_add_header() { if (is_single() || is_page()) { // include the jquery Ajax/form validation javascript file wp_enqueue_script( \'ajax-script\', plugi