load_theme_textdomain()
Загружает файл перевода темы (.mo) в память, для дальнейшей работы с ним.
Файл .mo должен находится в корневой директории темы и иметь название ЛОКАЛЬ.mo
, например: ru_RU.mo.
С версии 4.6. функция сначала пытается загрузить .mo файл ДОМЕН_ПЕРЕВОДА-ЛОКАЛЬ.mo
с папки /wp-content/language/themes
. Пример названия такого файла: twentyeleven-ru_RU.mo.
Функцию следует вызывать во время хука after_setup_theme.
Для подключения перевода плагина, используйте load_plugin_textdomain().
Интернационализация (Internationalization) и локализация (localization) означает адаптацию компьютерных программ под различные языки.
- l10n - это сокращение для localization.
- i18n - это сокращение для internationalization. 18 - это количество букв между начальной i и конечной n.
Хуков нет.
Возвращает
true|false
. Логический. true - если файл перевода был загружен, false - если не удалось получить.
Использование
load_theme_textdomain( $domain, $path );
- $domain(строка) (обязательный)
- Уникальный идентификатор по которому позднее в функциях перевода: __(), _e() можно будет обратиться именно к этой строке перевода.
- $path(строка)
- Путь до директории в которой расположен .mo файл (без оканчивающего слэша). По умолчанию указывается путь до каталога темы: get_template_directory().
По умолчанию: false
Примеры
#1 Как принято вызывать функцию
Функция обычно вызывается во время события after_setup_theme или можно напрямую сунуть в functions.php темы:
add_action( 'after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ load_theme_textdomain( 'my_theme', get_template_directory() . '/languages' ); }
Сначала WP попытается загрузить файл перевода из папки /wp-content/language/themes
- /wp-content/language/themes/my_theme-ru_RU.mo
.
Если там подходящего mo файла нет, то попытается загрузить его из папки темы /wp-content/themes/my_theme/language/ru_RU.mo
Тут my_theme - это указанный домен перевода, а ru_RU это текущая локаль...
#2 Переключения языка перевода
Этот пример можно использовать, когда нужно переключать язык. Для переключения будет использоваться переменная передаваемая в URL. Например, для переключения на русский, URL будет выглядеть так: www.example.com/?l=ru_RU. Так будет найден файл ru_RU.mo, в каталоге language в директории темы:
// Изменение языка локализации // нужно вызвать до вызова load_theme_textdomain() add_filter( 'locale', 'my_theme_localized' ); function my_theme_localized( $locale ){ if ( ! isset( $_GET['l'] ) ) return esc_attr( $_GET['l'] ); return $locale; } // Устанавливаем каталог перевода для темы // Переводы темы должны быть расположены в каталоге my_theme/languages/ // Переводы WordPress должны быть расположены в каталоге wp-content/languages add_action('after_setup_theme', 'my_theme_setup'); function my_theme_setup(){ load_theme_textdomain('my_theme', get_template_directory() . '/languages'); }
Заметки
- Global. WP_Textdomain_Registry. $wp_textdomain_registry WordPress Textdomain Registry.
- Global. Массив<Строка,. WP_Translations|NOOP_Translations> $l10n An 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. |