Функция load_muplugin_textdomain()
используется для загрузки переведенных строк из файлов .mo
для обязательных плагинов (mu-plugins), которые находятся в папке mu-plugins
. Эта функция позволяет обеспечивать поддержку перевода обязательных плагинов, как и для обычных плагинов и тем.
Если .mo
файл для текущей локали существует в указанной директории, WordPress подключает его, и строки переводов становятся доступны через функции перевода, такие как __()
и _e()
.
Основное отличие от обычных плагинов в том, что обязательные плагины (му-плагины) хранятся в отдельной директории и автоматически активируются при загрузке WordPress. Эти плагины не отображаются на странице управления плагинами, поэтому их необходимо обрабатывать отдельно, включая подключение переводов.
load_muplugin_textdomain( string $domain, string $mu_plugin_rel_path = '' ): bool
Параметры
- $domain (string, обязательный) — Уникальный текстовый домен плагина. Используется для идентификации строк перевода.
- $mu_plugin_rel_path (string, необязательный) — Относительный путь к директории с файлом перевода
.mo
, относительно директорииWPMU_PLUGIN_DIR
. По умолчанию — корневая директорияmu-plugins
.
Возвращаемое значение
- bool — Возвращает
true
, если файл перевода успешно загружен, иfalse
, если файл не найден или не загружен.
Примечания
- Файл перевода должен называться по схеме:
[домен]-[локаль].mo
. Например, для плагина с доменомmy-plugin
и локальюru_RU
файл перевода должен называтьсяmy-plugin-ru_RU.mo
. - Функция должна вызываться через хук
muplugins_loaded
или позже, например, на хукplugins_loaded
. - Начиная с WordPress 4.6, функция сначала пытается загрузить файл из директории
WP_LANG_DIR/plugins/
, что обычно находится в/wp-content/languages/plugins
.
Пример 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__ ) ) );
}
Здесь:
'my-plugin'
— текстовый домен плагина.- Перевод будет искаться в корневой директории MU-плагина.
Пример 2: Файл перевода в подпапке lang
Если вы хотите хранить файл перевода в подпапке, например, в lang
, можно указать путь к этой директории.
add_action( 'muplugins_loaded', 'myplugin_init' );
function myplugin_init() {
load_muplugin_textdomain( 'my-plugin', dirname( plugin_basename( __FILE__ ) ) . '/lang/' );
}
В этом случае:
- Файл перевода
my-plugin-ru_RU.mo
будет искаться в директорииlang
, которая находится внутри плагина.
Пример 3: Загрузка перевода при помощи хуков
Часто перевод загружают в момент выполнения хуков muplugins_loaded
или plugins_loaded
, чтобы быть уверенными, что все необходимые плагины и их переводы были подключены.
add_action( 'plugins_loaded', 'myplugin_load_textdomain' );
function myplugin_load_textdomain() {
load_muplugin_textdomain( 'my-plugin', 'mu-plugins/my-plugin/lang/' );
}
Здесь мы указываем путь к папке lang
внутри папки обязательного плагина.
Примечания к использованию
- Переводы для обязательных плагинов должны храниться отдельно от обычных плагинов, так как му-плагины не управляются через админку WordPress.
- При разработке MU-плагинов важно сохранять файлы перевода в структурированной и понятной директории, например,
mu-plugins/my-plugin/lang/
.
Связанные функции
- load_theme_textdomain() — Загружает переводы для темы.
- load_plugin_textdomain() — Загружает переводы для обычных плагинов.
- load_child_theme_textdomain() — Загружает переводы для дочерней темы.
- get_locale() — Возвращает текущую локаль.
Заключение
Функция load_muplugin_textdomain()
— важный инструмент для локализации обязательных плагинов в WordPress. Она позволяет загружать переводы из отдельных файлов .mo
, поддерживая многоязычность сайтов, на которых используются му-плагины.