load_theme_textdomain( string $domain, string|false $path = false ): bool
Loads the theme’s translated strings.
Contents
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.
Parameters
-
$domain
string Required -
Text domain. Unique identifier for retrieving translated strings.
-
$path
string|false Optional -
Path to the directory containing the .mo file.
Default:
false
Return
bool True when textdomain is successfully loaded, false otherwise.
Source
File: wp-includes/l10n.php
.
View all references
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 );
}
Hooks
-
apply_filters( 'theme_locale',
string $locale ,string $domain ) -
Filters a theme’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.
1st example
The
load_theme_textdomain()
function should generally be called from within theafter_setup_theme
action hook.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.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 nametz_MA.mo
in the language directory inside your theme.