load_plugin_textdomain()
Подключает .mo файл перевода из указанной папки. Не работает с MU плагинами.
.mo файл должен называться: ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo, где локаль это код языка (см. get_locale()). Например, если ДОМЕН_ПЕРЕВОДА=my-plugin и выбран русский язык (ЛОКАЛЬ=ru_RU), то файлы должны назваться: my-plugin-ru_RU.mo и my-plugin-ru_RU.po.
Вызывать функцию рекомендуется на хуке init, но можно и раньше например на plugins_loaded.
С WP 6.7.0 переводы не загружаются сразу, а регистрируются для загрузки в нужное время (если оно еще не наступило).
Если вызвать функцию ДО хука init, то перевод все равно будет подгружен на хуке init.
Подробнее смотрите здесь.
С версии 4.6. функция сначала пытается загрузить .mo файл с папки WP_LANG_DIR/plugins/ обычно это /wp-content/language/plugins.
Используйте load_theme_textdomain(), чтобы подключить перевод темы.
Хуков нет.
Возвращает
true|false. Вернет false, если .mo файл не существует по указанному пути. В остальных случаях функция вернет true.
Использование
load_plugin_textdomain( $domain, $deprecated, $plugin_rel_path );
- $domain(строка) (обязательный)
- Уникальный идентификатор для получения строки перевода.
- $deprecated(строка)
- Отмененный аргумент, работает до версии 2.7. Путь подобный ABSPATH, до .mo файла.
По умолчанию: false - $plugin_rel_path(строка)
Путь до каталога .mo файла относительно WP_PLUGIN_DIR.
Если путь не указан, то им будет корневая директория плагинов WP_PLUGIN_DIR. Т.е. путь до файла будет такой: WP_PLUGIN_DIR/domain-ru_RU.mo
По умолчанию: false
Примеры
#1 Если мы хотим расположить файл перевода .mo в подпапку languages:
add_action( 'plugins_loaded', 'myplugin_init' );
function myplugin_init() {
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
} #2 Регистрация файла перевода для MU плагина
В WP есть специальная функция load_muplugin_textdomain().
#3 Регистрация файла перевода для плагина
Подразумевается, что этот код будет расположен в основном файле плагина или в файле, который находится в корневой директории плагина. Если это не так, то __FILE__ нужно заменить на соответствующий путь.
Файл перевода должен лежать в каталоге плагина и должен называться: my-plugin-ru_RU.mo.
add_action( 'plugins_loaded', 'myplugin_init' );
function myplugin_init(){
load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) );
}
Заметки
- Global. WP_Textdomain_Registry.
$wp_textdomain_registryWordPress Textdomain Registry. - Global. Массив<Строка,. WP_Translations|NOOP_Translations>
$l10nAn array of all currently loaded text domains.
Список изменений
| С версии 1.5.0 | Введена. |
| С версии 4.6.0 | The function now tries to load the .mo file from the languages directory first. |
| С версии 6.7.0 | Translations are no longer immediately loaded, but handed off to the just-in-time loading mechanism. |