Loads the theme’s translated strings.
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
$domainstringrequired- Text domain. Unique identifier for retrieving translated strings.
$pathstring|falseoptional- Path to the directory containing the .mo file.
Default:
false
Source
function load_theme_textdomain( $domain, $path = false ) {
/** @var WP_Textdomain_Registry $wp_textdomain_registry */
/** @var array<string, WP_Translations|NOOP_Translations> $l10n */
global $wp_textdomain_registry, $l10n;
if ( ! is_string( $domain ) ) {
return false;
}
if ( ! $path ) {
$path = get_template_directory();
}
$wp_textdomain_registry->set_custom_path( $domain, $path );
// If just-in-time loading was triggered before, reset the entry so it can be tried again.
if ( isset( $l10n[ $domain ] ) && $l10n[ $domain ] instanceof NOOP_Translations ) {
unset( $l10n[ $domain ] );
}
return true;
}
1st example
The
load_theme_textdomain()function should generally be called from within theafter_setup_themeaction hook.The .mo files must use language-only filenames, like
languages/de_DE.moin your theme directory.Unlike plugin language files, a name like
my_theme-de_DE.mowill 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.Since WordPress 6.7 this can only be called on init or later.
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.mofile with nametz_MA.moin the language directory inside your theme.