load_plugin_textdomain

The timeline below displays how wordpress function load_plugin_textdomain has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.3

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string       $domain          Unique identifier for retrieving translated strings
 * @param string|false $deprecated      Optional. Deprecated. Use the $plugin_rel_path parameter instead.
 *                                      Default false.
 * @param string|false $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                      Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_plugin_textdomain($domain, $deprecated = false, $plugin_rel_path = false)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $wp_textdomain_registry;
    if (!is_string($domain)) {
        return 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, $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);
}

WordPress Version: 6.1

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string       $domain          Unique identifier for retrieving translated strings
 * @param string|false $deprecated      Optional. Deprecated. Use the $plugin_rel_path parameter instead.
 *                                      Default false.
 * @param string|false $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                      Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
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);
}

WordPress Version: 5.2

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string       $domain          Unique identifier for retrieving translated strings
 * @param string|false $deprecated      Optional. Deprecated. Use the $plugin_rel_path parameter instead.
 *                                      Default false.
 * @param string|false $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                      Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
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);
}

WordPress Version: 5.0

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Optional. Use the $plugin_rel_path parameter instead. Default false.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
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);
}

WordPress Version: 4.7

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Optional. Use the $plugin_rel_path parameter instead. Default false.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
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);
}

WordPress Version: 4.6

/**
 * Loads a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 * @since 4.6.0 The function now tries to load the .mo file from the languages directory first.
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Optional. Use the $plugin_rel_path parameter instead. Defaukt false.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
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', 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);
}

WordPress Version: 4.2

/**
 * Load a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Use the $plugin_rel_path parameter instead.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_plugin_textdomain($domain, $deprecated = false, $plugin_rel_path = false)
{
    $locale = get_locale();
    /**
     * Filter 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', $locale, $domain);
    if (false !== $plugin_rel_path) {
        $path = WP_PLUGIN_DIR . '/' . trim($plugin_rel_path, '/');
    } elseif (false !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '2.7');
        $path = ABSPATH . trim($deprecated, '/');
    } else {
        $path = WP_PLUGIN_DIR;
    }
    // Load the textdomain according to the plugin first
    $mofile = $domain . '-' . $locale . '.mo';
    if ($loaded = load_textdomain($domain, $path . '/' . $mofile)) {
        return $loaded;
    }
    // Otherwise, load from the languages directory
    $mofile = WP_LANG_DIR . '/plugins/' . $mofile;
    return load_textdomain($domain, $mofile);
}

WordPress Version: 4.0

/**
 * Load a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Use the $plugin_rel_path parameter instead.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 *                                Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_plugin_textdomain($domain, $deprecated = false, $plugin_rel_path = false)
{
    $locale = get_locale();
    /**
     * Filter 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', $locale, $domain);
    if (false !== $plugin_rel_path) {
        $path = WP_PLUGIN_DIR . '/' . trim($plugin_rel_path, '/');
    } else if (false !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '2.7');
        $path = ABSPATH . trim($deprecated, '/');
    } else {
        $path = WP_PLUGIN_DIR;
    }
    // Load the textdomain according to the plugin first
    $mofile = $domain . '-' . $locale . '.mo';
    if ($loaded = load_textdomain($domain, $path . '/' . $mofile)) {
        return $loaded;
    }
    // Otherwise, load from the languages directory
    $mofile = WP_LANG_DIR . '/plugins/' . $mofile;
    return load_textdomain($domain, $mofile);
}

WordPress Version: 3.7

/**
 * Load a plugin's translated strings.
 *
 * 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.
 *
 * @since 1.5.0
 *
 * @param string $domain          Unique identifier for retrieving translated strings
 * @param string $deprecated      Use the $plugin_rel_path parameter instead.
 * @param string $plugin_rel_path Optional. Relative path to WP_PLUGIN_DIR where the .mo file resides.
 */
function load_plugin_textdomain($domain, $deprecated = false, $plugin_rel_path = false)
{
    $locale = get_locale();
    /**
     * Filter 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', $locale, $domain);
    if (false !== $plugin_rel_path) {
        $path = WP_PLUGIN_DIR . '/' . trim($plugin_rel_path, '/');
    } else if (false !== $deprecated) {
        _deprecated_argument(__FUNCTION__, '2.7');
        $path = ABSPATH . trim($deprecated, '/');
    } else {
        $path = WP_PLUGIN_DIR;
    }
    // Load the textdomain according to the plugin first
    $mofile = $domain . '-' . $locale . '.mo';
    if ($loaded = load_textdomain($domain, $path . '/' . $mofile)) {
        return $loaded;
    }
    // Otherwise, load from the languages directory
    $mofile = WP_LANG_DIR . '/plugins/' . $mofile;
    return load_textdomain($domain, $mofile);
}