Функция is_textdomain_loaded() в WordPress: описание, использование, примеры

# IS_TEXTDOMAIN_LOADED() │ WP 3.0.0

Функция **is_textdomain_loaded()** помогает проверить, есть ли переводы для текстового домена. Это важно для многоязычных сайтов на WordPress.

- **Время выполнения:** 1 раз — 0.000027 сек (очень быстро) | 50000 раз — 0.01 сек (скорость света)
- **PHP версия:** 7.1.5, WP 4.8.2

### Хуки

Функция не использует хуки.

## Описание

Функция возвращает значение true или false, показывая, есть ли переводы для заданного текстового домена.

### Возврат

- **true** — есть переводы
- **false** — нет переводов

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

```php
is_textdomain_loaded( $domain );
  • $domain (строка) (обязательно): текстовый домен. Уникальный идентификатор для получения переведенных строк.

Примеры

Пример 1: Подключение файла перевода плагина

add_action( 'plugins_loaded', 'myplugin_init' );

function myplugin_init() {
    $domain = 'my-plugin';

    if ( is_textdomain_loaded( $domain ) ) {
        load_plugin_textdomain( $domain, false, dirname( plugin_basename( __FILE__ ) ) ); 
    }
}

Этот код проверяет, загружен ли текстовый домен для плагина my-plugin, и если да, загружает его переводы.

Пример 2: Подключение плагина с переводом, отличным от текущей локали пользователя

В некоторых случаях требуется загрузить переводы плагина, которые отличаются от локали текущего пользователя. Например, на многоязычных сайтах может потребоваться загрузка перевода поста или виджета.

if ( is_textdomain_loaded( $plugin ) ) {
    unload_textdomain( $plugin );
}

$mofile = sprintf( '%s-%s.mo', $plugin, $locale );

// Проверяем путь установки языка первым
$domain_path = path_join( WP_LANG_DIR, 'plugins' );
load_textdomain( $plugin, path_join( $domain_path, $mofile ) );

// В противном случае, проверяем папку языков плагина
if ( ! $loaded ) { 
    $domain_path = path_join( WP_PLUGIN_DIR, "{$plugin}/languages" );
    $loaded = load_textdomain( $plugin, path_join( $domain_path, $mofile ) );
}

Этот код сначала выгружает существующий текстовый домен, если он загружен, а затем пытается загрузить новый перевод для заданной локали.

Примечания

  • Глобально: MO[]. $l10n — массив всех в данный момент загруженных текстовых доменов.

Изменения

  • С версии: 3.0.0 — функция была добавлена.

Код функции

function is_textdomain_loaded( $domain ) {
    global $l10n;
    return isset( $l10n[ $domain ] ) && ! $l10n[ $domain ] instanceof NOOP_Translations;
}

Этот код проверяет, загружен ли текстовый домен, и возвращает соответствующее значение.

Связанные функции

  • get_translations_for_domain()
  • load_child_theme_textdomain()
  • load_muplugin_textdomain()
  • load_plugin_textdomain()
  • load_textdomain()
  • load_theme_textdomain()
  • unload_textdomain()
  • wp_set_script_translations()

Локализация (L10N, I18N, интернационализация, локализация)

  • __() — для получения перевода строки
  • _e() — для вывода переведенной строки
  • esc_attr__(), esc_html__() и другие — для безопасного получения перевода
  • switch_to_locale() — для переключения локали

Условные теги

Условные теги помогают проверит�� различные состояния в WordPress, например, является ли текущая страница архивом, является ли пользователь авторизованным и так далее.



Эта статья должна помочь вам лучше понять, как работает функция is_textdomain_loaded() и как ее использовать в ваших проектах на WordPress.

Leave a Reply

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