Функция 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, поддерживая многоязычность сайтов, на которых используются му-плагины.