load_textdomain

The timeline below displays how wordpress function load_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 .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 * @since 6.1.0 Added the `$locale` parameter.
 *
 * @global MO[]                   $l10n                   An array of all currently loaded text domains.
 * @global MO[]                   $l10n_unloaded          An array of all text domains that have been unloaded again.
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @param string $locale Optional. Locale. Default is the current locale.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile, $locale = null)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $l10n, $l10n_unloaded, $wp_textdomain_registry;
    $l10n_unloaded = (array) $l10n_unloaded;
    if (!is_string($domain)) {
        return false;
    }
    /**
     * Filters whether to short-circuit loading .mo file.
     *
     * Returning a non-null value from the filter will effectively short-circuit
     * the loading, returning the passed value instead.
     *
     * @since 6.3.0
     *
     * @param bool|null   $loaded The result of loading a .mo file. Default null.
     * @param string      $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile Path to the MO file.
     * @param string|null $locale Locale.
     */
    $loaded = apply_filters('pre_load_textdomain', null, $domain, $mofile, $locale);
    if (null !== $loaded) {
        if (true === $loaded) {
            unset($l10n_unloaded[$domain]);
        }
        return $loaded;
    }
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     * @since 6.2.0 Added the `$locale` parameter.
     *
     * @param bool        $override Whether to override the .mo file loading. Default false.
     * @param string      $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile   Path to the MO file.
     * @param string|null $locale   Locale.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile, $locale);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!$locale) {
        $locale = determine_locale();
    }
    $i18n_controller = WP_Translation_Controller::get_instance();
    // Ensures the correct locale is set as the current one, in case it was filtered.
    $i18n_controller->set_locale($locale);
    /**
     * Filters the preferred file format for translation files.
     *
     * Can be used to disable the use of PHP files for translations.
     *
     * @since 6.5.0
     *
     * @param string $preferred_format Preferred file format. Possible values: 'php', 'mo'. Default: 'php'.
     * @param string $domain           The text domain.
     */
    $preferred_format = apply_filters('translation_file_format', 'php', $domain);
    if (!in_array($preferred_format, array('php', 'mo'), true)) {
        $preferred_format = 'php';
    }
    $translation_files = array();
    if ('mo' !== $preferred_format) {
        $translation_files[] = substr_replace($mofile, ".l10n.{$preferred_format}", -strlen('.mo'));
    }
    $translation_files[] = $mofile;
    foreach ($translation_files as $file) {
        /**
         * Filters the file path for loading translations for the given text domain.
         *
         * Similar to the {@see 'load_textdomain_mofile'} filter with the difference that
         * the file path could be for an MO or PHP file.
         *
         * @since 6.5.0
         *
         * @param string $file   Path to the translation file to load.
         * @param string $domain The text domain.
         */
        $file = (string) apply_filters('load_translation_file', $file, $domain);
        $success = $i18n_controller->load_file($file, $domain, $locale);
        if ($success) {
            if (isset($l10n[$domain]) && $l10n[$domain] instanceof MO) {
                $i18n_controller->load_file($l10n[$domain]->get_filename(), $domain, $locale);
            }
            // Unset NOOP_Translations reference in get_translations_for_domain().
            unset($l10n[$domain]);
            $l10n[$domain] = new WP_Translations($i18n_controller, $domain);
            $wp_textdomain_registry->set($domain, $locale, dirname($file));
            return true;
        }
    }
    return false;
}

WordPress Version: 6.5

/**
 * Loads a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 * @since 6.1.0 Added the `$locale` parameter.
 *
 * @global MO[]                   $l10n                   An array of all currently loaded text domains.
 * @global MO[]                   $l10n_unloaded          An array of all text domains that have been unloaded again.
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @param string $locale Optional. Locale. Default is the current locale.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile, $locale = null)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $l10n, $l10n_unloaded, $wp_textdomain_registry;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to short-circuit loading .mo file.
     *
     * Returning a non-null value from the filter will effectively short-circuit
     * the loading, returning the passed value instead.
     *
     * @since 6.3.0
     *
     * @param bool|null   $loaded The result of loading a .mo file. Default null.
     * @param string      $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile Path to the MO file.
     * @param string|null $locale Locale.
     */
    $loaded = apply_filters('pre_load_textdomain', null, $domain, $mofile, $locale);
    if (null !== $loaded) {
        if (true === $loaded) {
            unset($l10n_unloaded[$domain]);
        }
        return $loaded;
    }
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     * @since 6.2.0 Added the `$locale` parameter.
     *
     * @param bool        $override Whether to override the .mo file loading. Default false.
     * @param string      $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile   Path to the MO file.
     * @param string|null $locale   Locale.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile, $locale);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!$locale) {
        $locale = determine_locale();
    }
    $i18n_controller = WP_Translation_Controller::get_instance();
    // Ensures the correct locale is set as the current one, in case it was filtered.
    $i18n_controller->set_locale($locale);
    /**
     * Filters the preferred file format for translation files.
     *
     * Can be used to disable the use of PHP files for translations.
     *
     * @since 6.5.0
     *
     * @param string $preferred_format Preferred file format. Possible values: 'php', 'mo'. Default: 'php'.
     * @param string $domain           The text domain.
     */
    $preferred_format = apply_filters('translation_file_format', 'php', $domain);
    if (!in_array($preferred_format, array('php', 'mo'), true)) {
        $preferred_format = 'php';
    }
    $translation_files = array();
    if ('mo' !== $preferred_format) {
        $translation_files[] = substr_replace($mofile, ".l10n.{$preferred_format}", -strlen('.mo'));
    }
    $translation_files[] = $mofile;
    foreach ($translation_files as $file) {
        /**
         * Filters the file path for loading translations for the given text domain.
         *
         * Similar to the {@see 'load_textdomain_mofile'} filter with the difference that
         * the file path could be for an MO or PHP file.
         *
         * @since 6.5.0
         *
         * @param string $file   Path to the translation file to load.
         * @param string $domain The text domain.
         */
        $file = (string) apply_filters('load_translation_file', $file, $domain);
        $success = $i18n_controller->load_file($file, $domain, $locale);
        if ($success) {
            if (isset($l10n[$domain]) && $l10n[$domain] instanceof MO) {
                $i18n_controller->load_file($l10n[$domain]->get_filename(), $domain, $locale);
            }
            // Unset NOOP_Translations reference in get_translations_for_domain().
            unset($l10n[$domain]);
            $l10n[$domain] = new WP_Translations($i18n_controller, $domain);
            $wp_textdomain_registry->set($domain, $locale, dirname($file));
            return true;
        }
    }
    return false;
}

WordPress Version: 6.3

/**
 * Loads a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 * @since 6.1.0 Added the `$locale` parameter.
 *
 * @global MO[]                   $l10n                   An array of all currently loaded text domains.
 * @global MO[]                   $l10n_unloaded          An array of all text domains that have been unloaded again.
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @param string $locale Optional. Locale. Default is the current locale.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile, $locale = null)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $l10n, $l10n_unloaded, $wp_textdomain_registry;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to short-circuit loading .mo file.
     *
     * Returning a non-null value from the filter will effectively short-circuit
     * the loading, returning the passed value instead.
     *
     * @since 6.3.0
     *
     * @param bool|null   $loaded The result of loading a .mo file. Default null.
     * @param string      $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile Path to the MO file.
     * @param string|null $locale Locale.
     */
    $loaded = apply_filters('pre_load_textdomain', null, $domain, $mofile, $locale);
    if (null !== $loaded) {
        if (true === $loaded) {
            unset($l10n_unloaded[$domain]);
        }
        return $loaded;
    }
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     * @since 6.2.0 Added the `$locale` parameter.
     *
     * @param bool        $override Whether to override the .mo file loading. Default false.
     * @param string      $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile   Path to the MO file.
     * @param string|null $locale   Locale.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile, $locale);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    if (!$locale) {
        $locale = determine_locale();
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        $wp_textdomain_registry->set($domain, $locale, false);
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    $wp_textdomain_registry->set($domain, $locale, dirname($mofile));
    return true;
}

WordPress Version: 6.2

/**
 * Loads a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 * @since 6.1.0 Added the `$locale` parameter.
 *
 * @global MO[]                   $l10n                   An array of all currently loaded text domains.
 * @global MO[]                   $l10n_unloaded          An array of all text domains that have been unloaded again.
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @param string $locale Optional. Locale. Default is the current locale.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile, $locale = null)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $l10n, $l10n_unloaded, $wp_textdomain_registry;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     * @since 6.2.0 Added the `$locale` parameter.
     *
     * @param bool        $override Whether to override the .mo file loading. Default false.
     * @param string      $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string      $mofile   Path to the MO file.
     * @param string|null $locale   Locale.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile, $locale);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    if (!$locale) {
        $locale = determine_locale();
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        $wp_textdomain_registry->set($domain, $locale, false);
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    $wp_textdomain_registry->set($domain, $locale, dirname($mofile));
    return true;
}

WordPress Version: 6.1

/**
 * Loads a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 * @since 6.1.0 Added the `$locale` parameter.
 *
 * @global MO[]                   $l10n                   An array of all currently loaded text domains.
 * @global MO[]                   $l10n_unloaded          An array of all text domains that have been unloaded again.
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @param string $locale Optional. Locale. Default is the current locale.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile, $locale = null)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $l10n, $l10n_unloaded, $wp_textdomain_registry;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the .mo file loading. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    if (!$locale) {
        $locale = determine_locale();
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        $wp_textdomain_registry->set($domain, $locale, false);
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    $wp_textdomain_registry->set($domain, $locale, dirname($mofile));
    return true;
}

WordPress Version: 5.5

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @global MO[] $l10n          An array of all currently loaded text domains.
 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n, $l10n_unloaded;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the .mo file loading. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true === (bool) $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    return true;
}

WordPress Version: 5.1

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @global MO[] $l10n          An array of all currently loaded text domains.
 * @global MO[] $l10n_unloaded An array of all text domains that have been unloaded again.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n, $l10n_unloaded;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the .mo file loading. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true == $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    return true;
}

WordPress Version: 4.6

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @global array $l10n          An array of all currently loaded text domains.
 * @global array $l10n_unloaded An array of all text domains that have been unloaded again.
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n, $l10n_unloaded;
    $l10n_unloaded = (array) $l10n_unloaded;
    /**
     * Filters whether to override the .mo file loading.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the .mo file loading. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true == $plugin_override) {
        unset($l10n_unloaded[$domain]);
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filters MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    unset($l10n_unloaded[$domain]);
    $l10n[$domain] =& $mo;
    return true;
}

WordPress Version: 4.3

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @global array $l10n
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n;
    /**
     * Filter text domain and/or MO file path for loading translations.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the text domain. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true == $plugin_override) {
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filter MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    $l10n[$domain] =& $mo;
    return true;
}

WordPress Version: 3.9

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n;
    /**
     * Filter text domain and/or MO file path for loading translations.
     *
     * @since 2.9.0
     *
     * @param bool   $override Whether to override the text domain. Default false.
     * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile   Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true == $plugin_override) {
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filter MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    $l10n[$domain] =& $mo;
    return true;
}

WordPress Version: 3.7

/**
 * Load a .mo file into the text domain $domain.
 *
 * If the text domain already exists, the translations will be merged. If both
 * sets have the same string, the translation from the original value will be taken.
 *
 * On success, the .mo file will be placed in the $l10n global by $domain
 * and will be a MO object.
 *
 * @since 1.5.0
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $mofile Path to the .mo file.
 * @return bool True on success, false on failure.
 */
function load_textdomain($domain, $mofile)
{
    global $l10n;
    /**
     * Filter text domain and/or MO file path for loading translations.
     *
     * @since 2.9.0
     *
     * @param boolean        Whether to override the text domain. Default false.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the MO file.
     */
    $plugin_override = apply_filters('override_load_textdomain', false, $domain, $mofile);
    if (true == $plugin_override) {
        return true;
    }
    /**
     * Fires before the MO translation file is loaded.
     *
     * @since 2.9.0
     *
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     * @param string $mofile Path to the .mo file.
     */
    do_action('load_textdomain', $domain, $mofile);
    /**
     * Filter MO file path for loading translations for a specific text domain.
     *
     * @since 2.9.0
     *
     * @param string $mofile Path to the MO file.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $mofile = apply_filters('load_textdomain_mofile', $mofile, $domain);
    if (!is_readable($mofile)) {
        return false;
    }
    $mo = new MO();
    if (!$mo->import_from_file($mofile)) {
        return false;
    }
    if (isset($l10n[$domain])) {
        $mo->merge_with($l10n[$domain]);
    }
    $l10n[$domain] =& $mo;
    return true;
}