返回介绍

load_plugin_textdomain()

发布于 2017-09-11 01:41:25 字数 4567 浏览 1048 评论 0 收藏 0

load_plugin_textdomain( string $domain,  string $deprecated = false,  string $plugin_rel_path = false )

Loads a plugin’s translated strings.


description

If the path is not given then it will be the root of the plugin directory.

The .mo file should be named based on the text domain with a dash, and then the locale exactly.


参数

$domain

(string) (Required) Unique identifier for retrieving translated strings

$deprecated

(string) (Optional) Use the $plugin_rel_path parameter instead.

Default value: false

$plugin_rel_path

(string) (Optional) Relative path to WP_PLUGIN_DIR where the .mo file resides.

Default value: false


返回值

(bool) True when textdomain is successfully loaded, false otherwise.


源代码

File: wp-includes/l10n.php

function load_plugin_textdomain( $domain, $deprecated = false, $plugin_rel_path = false ) {
	/**
	 * Filters a plugin's locale.
	 *
	 * @since 3.0.0
	 *
	 * @param string $locale The plugin's current locale.
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 */
	$locale = apply_filters( 'plugin_locale', is_admin() ? get_user_locale() : get_locale(), $domain );

	$mofile = $domain . '-' . $locale . '.mo';

	// Try to load from the languages directory first.
	if ( load_textdomain( $domain, WP_LANG_DIR . '/plugins/' . $mofile ) ) {
		return true;
	}

	if ( false !== $plugin_rel_path ) {
		$path = WP_PLUGIN_DIR . '/' . trim( $plugin_rel_path, '/' );
	} elseif ( false !== $deprecated ) {
		_deprecated_argument( __FUNCTION__, '2.7.0' );
		$path = ABSPATH . trim( $deprecated, '/' );
	} else {
		$path = WP_PLUGIN_DIR;
	}

	return load_textdomain( $domain, $path . '/' . $mofile );
}

更新日志

Versiondescription
4.6.0The function now tries to load the .mo file from the languages directory first.
1.5.0Introduced.

相关函数

Uses

  • wp-includes/l10n.php: get_user_locale()
  • wp-includes/l10n.php: load_textdomain()
  • wp-includes/l10n.php: plugin_locale
  • wp-includes/l10n.php: get_locale()
  • wp-includes/load.php: is_admin()
  • wp-includes/functions.php: _deprecated_argument()
  • wp-includes/plugin.php: apply_filters()
  • Show 2 more uses Hide more uses

Used By

  • wp-admin/includes/plugin.php: _get_plugin_data_markup_translate()

User Contributed Notes

  1. Skip to note content You must log in to vote on the helpfulness of this noteVote results for this note: 3You must log in to vote on the helpfulness of this note Contributed by Fahad Alduraibi

    Loading the plugin translations should not be done during plugins_loaded action since that is too early and prevent other language 相关函数 plugins from correctly hooking up with load_textdomain() function and doing whatever they want to do.
    Calling load_plugin_textdomain() should be delayed until init action.

    
    add_action( 'init', 'wpdocs_load_textdomain' );
     
    /**
     * Load plugin textdomain.
     */
    function wpdocs_load_textdomain() {
      load_plugin_textdomain( 'wpdocs_textdomain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); 
    }
    
  2. This example assumes that it is placed in the main plugin file, or at least a file in the plugin root. If it’s not, you’ll need to adjust the plugin_dir_path() call accordingly.

    
    add_action( 'plugins_loaded', 'wpdocs_load_textdomain' );
    
    /**
     * Load plugin textdomain.
     */
    function wpdocs_load_textdomain() {
      load_plugin_textdomain( 'wpdocs_textdomain', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' ); 
    }
    
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文