load_plugin_textdomain( string $domain, string|false $deprecated = false, string|false $plugin_rel_path = false ): bool
Loads a plugin’s translated strings.
Contents
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
-
$domain
string Required -
Unique identifier for retrieving translated strings
-
$deprecated
string|false Optional -
Deprecated. Use the $plugin_rel_path parameter instead.
Default:
false
-
$plugin_rel_path
string|false Optional -
Relative path to WP_PLUGIN_DIR where the .mo file resides.
Default:
false
Return
bool True when textdomain is successfully loaded, false otherwise.
Source
File: wp-includes/l10n.php
.
View all references
function load_plugin_textdomain( $domain, $deprecated = false, $plugin_rel_path = false ) {
/** @var WP_Textdomain_Registry $wp_textdomain_registry */
global $wp_textdomain_registry;
/**
* 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, $locale ) ) {
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;
}
$wp_textdomain_registry->set_custom_path( $domain, $path );
return load_textdomain( $domain, $path . '/' . $mofile, $locale );
}
Hooks
-
apply_filters( 'plugin_locale',
string $locale ,string $domain ) -
Filters a plugin’s locale.
Changelog
Version | Description |
---|---|
4.6.0 | The function now tries to load the .mo file from the languages directory first. |
1.5.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
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 withload_textdomain()
function and doing whatever they want to do.Calling
load_plugin_textdomain()
should be delayed untilinit
action.Top ↑
Feedback
I’ve found the
after_setup_theme
can work better. The default WordPress themes use this hook to load the theme textdomains and some plugininit
actions require the translations to be in place and load before the default priority 10. — By joost de keijzer —Loading plugin textdomain on
init
hook doesn’t work for all the strings. For example, translations for admin menu items will not be loaded, while later strings will be translated. — By viknov —Just a note,
load_plugin_textdomain()
will try to load the mo file firstly from:WP_LANG_DIR . ‘/plugins/’ . $mofile
Only if it is not able to it will load it from WP_PLUGIN_DIR folder
Plugin Text domain load
Top ↑
Feedback
See note by Fahad Alduraibi above: You should load plugin textdomains during the
init
action (and notplugins_loaded
). — By Philipp Stracker —