load_textdomain

Подключает домен и .mo файл в данные локализации.

Если файл подключен успешно, то его данные будут размещены в глобальную переменную $l10n ($l10n[$domain] = & $mo;).

Если указанный домен уже существует в данных, то подключаемые строки локализации объединяться с имеющимися. См. метод $mo->merge_with( $l10n[$domain] ).

Файл перевода должен быть подключен до того, как он будет использован. Поэтому load_textdomain() принято вызывать во время события plugins_loaded.

Для перевода строки в WordPress сначала нужно подключить данные перевода. Сделать это можно функциями-обертками для load_textdomain(): load_theme_textdomain(), load_plugin_textdomain() или напрямую функцией load_textdomain().
Хуки из функции:
load_textdomain
load_textdomain_mofile
override_load_textdomain
Возвращает

Логические true или false. Вернет false, если .mo файл не существует по указанному пути. В остальных случаях функция вернет true.

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

load_textdomain( $domain, $mofile )
$domain(строка) (обязательный)
Уникальный идентификатор, по которому, для перевода строки, в дальнейшем можно будет обращаться.
$mofile(строка) (обязательный)
Абсолютный путь до .mo файла (home/site.ru/wp-content/plugins/my-plugin.mo).

Примеры

#1 Перевод строки в WordPress

В этом примере переведем строку __('book', 'domain'). Подразумевается, что .mo файл для перевода уже создан и в нем есть данные для перевода этой строки:

<?php
function load_textdomain( $domain, $mofile ) {
	global $l10n, $l10n_unloaded;

	$l10n_unloaded = (array) $l10n_unloaded;

	/**
	 * Filters whether to override the .mo file loading.
	 *
	 * @since 2.9.0
	 *
	 * @param bool   $override Whether to override the .mo file loading. Default false.
	 * @param string $domain   Text domain. Unique identifier for retrieving translated strings.
	 * @param string $mofile   Path to the MO file.
	 */
	$plugin_override = apply_filters( 'override_load_textdomain', false, $domain, $mofile );

	if ( true == $plugin_override ) {
		unset( $l10n_unloaded[ $domain ] );

		return true;
	}

	/**
	 * Fires before the MO translation file is loaded.
	 *
	 * @since 2.9.0
	 *
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 * @param string $mofile Path to the .mo file.
	 */
	do_action( 'load_textdomain', $domain, $mofile );

	/**
	 * Filters MO file path for loading translations for a specific text domain.
	 *
	 * @since 2.9.0
	 *
	 * @param string $mofile Path to the MO file.
	 * @param string $domain Text domain. Unique identifier for retrieving translated strings.
	 */
	$mofile = apply_filters( 'load_textdomain_mofile', $mofile, $domain );

	if ( !is_readable( $mofile ) ) return false;

	$mo = new MO();
	if ( !$mo->import_from_file( $mofile ) ) return false;

	if ( isset( $l10n[$domain] ) )
		$mo->merge_with( $l10n[$domain] );

	unset( $l10n_unloaded[ $domain ] );

	$l10n[$domain] = &$mo;

	return true;
}