Как использовать функцию load_muplugin_textdomain() в WordPress 3.0.0

LOAD_MUPLUGIN_TEXTDOMAIN() │ WP 3.0.0

Функция load_muplugin_textdomain() загружает переведенные строки для плагина, который находится в директории mu-plugins. Это полезно, если вы хотите сделать свой плагин доступным для разных языков.

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

Эта функция использует другую функцию load_textdomain() для загрузки переведенных строк.

Возвращаемое значение

Функция возвращает:

  • true — если текстовая домен успешно загружена,
  • false — в противном случае.

Синтаксис

load_muplugin_textdomain( $domain, $mu_plugin_rel_path );
  • $domain (строка, обязательный параметр) — это уникальный идентификатор для получения переводов.
  • $mu_plugin_rel_path (строка) — относительный путь к директории mu-plugins, где хранится ваш .mo файл. По умолчанию — пустая строка.

Примеры

Пример 1: Регистрация файла перевода для mu-плагина

Файл перевода должен находиться в директории плагина и иметь имя, например: my-plugin-fr_FR.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/' );
}

Заметки

  • Глобальная переменная: $wp_textdomain_registry — это регистратор текстовых доменов в WordPress.
  • Глобальная переменная: $l10n — массив, в котором хранятся все загруженные текстовые домены и их переводы.

Изменения

  • С версии 3.0.0 — функция была введена.
  • С версии 4.6.0 — функция сначала пытается загрузить файл .mo из директории языков.
  • С версии 6.7.0 — переводы больше не загружаются сразу, а передаются в механизм загрузки по мере необходимости.

Код функции

function load_muplugin_textdomain( $domain, $mu_plugin_rel_path = '' ) {
    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 ( isset( $l10n[ $domain ] ) && $l10n[ $domain ] instanceof NOOP_Translations ) {
        unset( $l10n[ $domain ] );
    }

    return true;
}

Эта функция позволяет разработчикам загружать переводы для своих mu-плагинов, упрощая жизнь пользователям, говорящим на разных языках.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *