# 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.