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

Loads a plugin’s translated strings.


Description 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.


Parameters Parameters

$domain

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

$deprecated

(string|false) (Optional) Deprecated. Use the $plugin_rel_path parameter instead.

Default value: false

$plugin_rel_path

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

Default value: false


Top ↑

Return Return

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


Top ↑

Source Source

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

Top ↑

Changelog Changelog

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


Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    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 related 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. Skip to note 2 content
    Contributed by Codex

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

You must log in before being able to contribute a note or feedback.