load_theme_textdomain

Загружает файл перевода темы (.mo) в память, для дальнейшей работы с ним.

Файл .mo должен находится в корневой директории темы. Он будет загружен в виде строки для указанного идентификатора $domain.

Файл перевода .mo должен иметь точно такое же название как и текущая локализация (указывается в wp-config.php), например, ru_RU.mo.

load_theme_textdomain() предназначена для использования в темах, если нужно подключить файл перевода для плагина, используйте load_plugin_textdomain().

Следует вызывать во время хука after_setup_theme

С версии 4.6. функция сначала пытается загрузить .mo файл с папки /wp-content/language/plugins.
Хуки из функции:
theme_locale
Возвращает

Логический. true – если файл перевода был загружен, false – если не удалось получить.

Использование

load_theme_textdomain( $domain, $path );
$domain(строка) (обязательный)
Уникальный идентификатор по которому позднее в функциях перевода: __() _e() можно будет обратиться именно к этой строке перевода.
$path(строка)
Путь до директории в которой расположен .mo файл (без оканчивающего слэша). По умолчанию указывается путь до каталога темы: get_template_directory().
По умолчанию: false

Примеры

#1 Как принято вызывать функцию

load_theme_textdomain() обычно вызывается во время хука-собития after_setup_theme:

<?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', 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' );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *