load_muplugin_textdomain()
Подключает .mo файл перевода для обязательных плагинов (mu-plugins) из указанной папки.
MO файл должен называться: ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo. Например my-plugin-ru_RU.mo, где my-plugin домен перевода и ru_RU локаль перевода. Какие бывают локали см. в get_locale().
Вызывать функцию рекомендуется на хуке init, но можно и раньше на хуках muplugins_loaded, plugins_loaded.
С WP 6.7.0 переводы не загружаются сразу, а лишь регистрируются для загрузки в нужное время (если оно еще не наступило).
Если вызвать функцию ДО хука init, то перевод все равно будет подгружен на хуке init.
Подробнее читайте здесь.
С версии 4.6. функция сначала пытается загрузить .mo файл с папки WP_LANG_DIR/plugins/ обычно это /wp-content/language/plugins.
-
Используйте load_theme_textdomain(), чтобы подключить переводы для темы.
- Используйте load_plugin_textdomain(), чтобы подключить переводы для обычного плагина.
Хуков нет.
Возвращает
true|false. Вернет false, если .mo файл не существует по указанному пути. В остальных случаях функция вернет true.
Использование
load_muplugin_textdomain( $domain, $mu_plugin_rel_path );
- $domain(строка) (обязательный)
- Уникальный идентификатор для получения строки перевода.
- $mu_plugin_rel_path(строка)
Путь до каталога .mo файла относительно WPMU_PLUGIN_DIR.
Если путь не указан, то им будет корневая директория MU плагинов WPMU_PLUGIN_DIR. Т.е. путь до файла будет такой: WPMU_PLUGIN_DIR/domain-ru_RU.mo.
По умолчанию: ''
Примеры
#1 Регистрация файла перевода для MU плагина
Файл перевода должен лежать в каталоге обязательного плагина и должен называться: my-plugin-ru_RU.mo.
add_action( 'muplugins_loaded', 'myplugin_init' );
function myplugin_init(){
load_muplugin_textdomain( 'my-plugin', dirname( plugin_basename( __FILE__ ) ) );
} #2 Если нужно расположить файл перевода .mo в подпапку lang:
Файл перевода должен лежать в подпапке lang обязательного плагина и должен называться: my-plugin-ru_RU.mo.
add_action( 'muplugins_loaded', 'myplugin_init' );
function myplugin_init() {
load_muplugin_textdomain( 'my-plugin', dirname( plugin_basename( __FILE__ ) ) . '/lang/' );
}
Заметки
- Global. WP_Textdomain_Registry. $wp_textdomain_registry WordPress Textdomain Registry.
- Global. Массив<Строка,. WP_Translations|NOOP_Translations> $l10n An array of all currently loaded text domains.
Список изменений
| С версии 3.0.0 | Введена. |
| С версии 4.6.0 | The function now tries to load the .mo file from the languages directory first. |
| С версии 6.7.0 | Translations are no longer immediately loaded, but handed off to the just-in-time loading mechanism. |
Код load_muplugin_textdomain() load muplugin textdomain WP 6.9
function load_muplugin_textdomain( $domain, $mu_plugin_rel_path = '' ) {
/** @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;
}
$path = WPMU_PLUGIN_DIR . '/' . ltrim( $mu_plugin_rel_path, '/' );
$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;
}