load_theme_textdomain( string $domain, string|false $path = false )

Load the theme’s translated strings.

Description Description

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.

Top ↑

Parameters Parameters


(string) (Required) Text domain. Unique identifier for retrieving translated strings.


(string|false) (Optional) Path to the directory containing the .mo file.

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

Top ↑

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 Codex

    1st example
    The load_theme_textdomain() function should generally be called from within the after_setup_theme action hook.

    add_action('after_setup_theme', 'wpdocs_theme_setup');
     * Load translations for wpdocs_theme
    function wpdocs_theme_setup(){
        load_theme_textdomain('wpdocs_theme', get_template_directory() . '/languages');

    The .mo files must use language-only filenames, like languages/de_DE.mo in your theme directory.

    Unlike plugin language files, a name like my_theme-de_DE.mo will NOT work. Although plugin language files allow you to specify the text-domain in the filename, this will NOT work with themes. Language files for themes should include the language shortcut ONLY.

  2. Skip to note 2 content
    Contributed by Codex

    2nd example
    you can use this example if you wish to switch theme language using a variable passed within the URL, for example to load the Tamazikht language, your URL would look like; www.example.com/?l=tz_MA, this will search for a .mo file with name tz_MA.mo in the language directory inside your theme.

    // must be called before load_theme_textdomain()
    add_filter( 'locale', 'wpdocs_theme_localized' );
     * Switch to locale given as query parameter l, if present
    function wpdocs_theme_localized( $locale )
    	if ( isset( $_GET['l'] ) )
    		return sanitize_key( $_GET['l'] );
    	return $locale;
    // Theme translations can be filed in the my_theme/languages/ directory
    // Wordpress translations can be filed in the wp-content/languages/ directory
    load_theme_textdomain( 'wpdocs_theme_textdomain', get_template_directory().'/languages' );

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