load_textdomain()
Подключает указанный файл перевода.
Функция парсит указанный в параметрах .mo файл и добавляет данные из него в данные переводов WordPress - в глобальную переменную $l10n:
$l10n[ $domain ] = & $mo;
Если указанный домен уже существует в данных, то подключаемые строки локализации объединяться с имеющимися (сливаются в единый массив).
Файл перевода должен быть подключен до того, как он будет использован. Поэтому load_textdomain() принято вызывать во время события plugins_loaded.
Для перевода любой строки в WordPress, у строки должен быть перевод, а чтобы он был нужно подключить данные перевода, среди которых будет перевод нужной строки. Подключить данные перевода, а именно загрузить .mo файл перевода в глобальные данные локализации можно с помощью:
- load_textdomain() - этой функцией .
- load_theme_textdomain() - обертка для этой функции.
- load_child_theme_textdomain() - обертка для этой функции.
- load_plugin_textdomain() - обертка для этой функции.
Возвращает
true|false
. Вернет false, если .mo файл не существует по указанному пути. В остальных случаях функция вернет true.
Использование
load_textdomain( $domain, $mofile )
- $domain(строка) (обязательный)
- Уникальный идентификатор, по которому, для перевода строки, в дальнейшем можно будет обращаться.
- $mofile(строка) (обязательный)
- Абсолютный путь до .mo файла (home/example.com/wp-content/plugins/my-plugin.mo).
- $locale(строка) (WP 6.1)
- Локаль.
По умолчанию: null (текущая локаль)
Примеры
#1 Перевод строки в WordPress
В этом примере переведем строку __('book', 'mydomain')
. Подразумевается, что .mo файл для перевода уже создан и в нем есть данные для перевода этой строки:
// здесь .mo файл должен лежать в папке lang, которая находится в папке где находится сам файл в котором вызывается эта строка // Подключаем имеющийся файл .mo (название файла: ru_RU.mo или другое, зависит от локали) add_action( 'plugins_loaded', 'load_my_textdomain' ); function load_my_textdomain(){ $mo_file_path = dirname(__FILE__) . '/lang/'. determine_locale() . '.mo'; load_textdomain( 'mydomain', $mo_file_path ); }
Для версий WP меньше 5.0 используйте get_locale() вместо determine_locale().
Теперь в теме используем:
<?php _e( 'book', 'mydomain' ); ?>
Выведет "книга".
Заметки
- Global. MO[]. $l10n An array of all currently loaded text domains.
- Global. MO[]. $l10n_unloaded An array of all text domains that have been unloaded again.
- Global. WP_Textdomain_Registry. $wp_textdomain_registry WordPress Textdomain Registry.
Список изменений
С версии 1.5.0 | Введена. |
С версии 6.1.0 | Added the $locale parameter. |