load_theme_textdomain

The timeline below displays how wordpress function load_theme_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 the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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.
 *
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string       $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string|false $path   Optional. Path to the directory containing the .mo file.
 *                             Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $wp_textdomain_registry;
    if (!is_string($domain)) {
        return false;
    }
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', determine_locale(), $domain);
    $mofile = $domain . '-' . $locale . '.mo';
    // Try to load from the languages directory first.
    if (load_textdomain($domain, WP_LANG_DIR . '/themes/' . $mofile, $locale)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    $wp_textdomain_registry->set_custom_path($domain, $path);
    return load_textdomain($domain, $path . '/' . $locale . '.mo', $locale);
}

WordPress Version: 6.1

/**
 * Loads the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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.
 *
 * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry.
 *
 * @param string       $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string|false $path   Optional. Path to the directory containing the .mo file.
 *                             Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /** @var WP_Textdomain_Registry $wp_textdomain_registry */
    global $wp_textdomain_registry;
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', determine_locale(), $domain);
    $mofile = $domain . '-' . $locale . '.mo';
    // Try to load from the languages directory first.
    if (load_textdomain($domain, WP_LANG_DIR . '/themes/' . $mofile, $locale)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    $wp_textdomain_registry->set_custom_path($domain, $path);
    return load_textdomain($domain, $path . '/' . $locale . '.mo', $locale);
}

WordPress Version: 5.7

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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 Text domain. Unique identifier for retrieving translated strings.
 * @param string|false $path   Optional. Path to the directory containing the .mo file.
 *                             Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', determine_locale(), $domain);
    $mofile = $domain . '-' . $locale . '.mo';
    // Try to load from the languages directory first.
    if (load_textdomain($domain, WP_LANG_DIR . '/themes/' . $mofile)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    return load_textdomain($domain, $path . '/' . $locale . '.mo');
}

WordPress Version: 5.0

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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 Text domain. Unique identifier for retrieving translated strings.
 * @param string $path   Optional. Path to the directory containing the .mo file.
 *                       Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', determine_locale(), $domain);
    $mofile = $domain . '-' . $locale . '.mo';
    // Try to load from the languages directory first.
    if (load_textdomain($domain, WP_LANG_DIR . '/themes/' . $mofile)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    return load_textdomain($domain, $path . '/' . $locale . '.mo');
}

WordPress Version: 4.7

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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 Text domain. Unique identifier for retrieving translated strings.
 * @param string $path   Optional. Path to the directory containing the .mo file.
 *                       Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_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 . '/themes/' . $mofile)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    return load_textdomain($domain, $path . '/' . $locale . '.mo');
}

WordPress Version: 4.6

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on 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 Text domain. Unique identifier for retrieving translated strings.
 * @param string $path   Optional. Path to the directory containing the .mo file.
 *                       Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    /**
     * Filters a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', get_locale(), $domain);
    $mofile = $domain . '-' . $locale . '.mo';
    // Try to load from the languages directory first.
    if (load_textdomain($domain, WP_LANG_DIR . '/themes/' . $mofile)) {
        return true;
    }
    if (!$path) {
        $path = get_template_directory();
    }
    return load_textdomain($domain, $path . '/' . $locale . '.mo');
}

WordPress Version: 4.1

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on the locale exactly.
 *
 * @since 1.5.0
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $path   Optional. Path to the directory containing the .mo file.
 *                       Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    $locale = get_locale();
    /**
     * Filter a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', $locale, $domain);
    if (!$path) {
        $path = get_template_directory();
    }
    // Load the textdomain according to the theme
    $mofile = untrailingslashit($path) . "/{$locale}.mo";
    if ($loaded = load_textdomain($domain, $mofile)) {
        return $loaded;
    }
    // Otherwise, load from the languages directory
    $mofile = WP_LANG_DIR . "/themes/{$domain}-{$locale}.mo";
    return load_textdomain($domain, $mofile);
}

WordPress Version: 3.7

/**
 * Load the theme's translated strings.
 *
 * If the current locale exists as a .mo file in the theme's root directory, it
 * will be included in the translated strings by the $domain.
 *
 * The .mo files must be named based on the locale exactly.
 *
 * @since 1.5.0
 *
 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
 * @param string $path   Optional. Path to the directory containing the .mo file.
 *                       Default false.
 * @return bool True when textdomain is successfully loaded, false otherwise.
 */
function load_theme_textdomain($domain, $path = false)
{
    $locale = get_locale();
    /**
     * Filter a theme's locale.
     *
     * @since 3.0.0
     *
     * @param string $locale The theme's current locale.
     * @param string $domain Text domain. Unique identifier for retrieving translated strings.
     */
    $locale = apply_filters('theme_locale', $locale, $domain);
    if (!$path) {
        $path = get_template_directory();
    }
    // Load the textdomain according to the theme
    $mofile = "{$path}/{$locale}.mo";
    if ($loaded = load_textdomain($domain, $mofile)) {
        return $loaded;
    }
    // Otherwise, load from the languages directory
    $mofile = WP_LANG_DIR . "/themes/{$domain}-{$locale}.mo";
    return load_textdomain($domain, $mofile);
}