Вот мой фрагмент functions.php:
function get_theme_text_domain() { //Same behavior if I return the string as 'return 'whatever' $theme = wp_get_theme(); return $theme->get('TextDomain'); } function tamtando_theme_setup() { load_textdomain(get_theme_text_domain(), get_template_directory() . '/languages'); [...] } add_action('after_setup_theme', 'tamtando_theme_setup');
$theme
– массив со всеми свойствами темы: как и ожидалось. $theme->get('TextDomain')
возвращает 'tamtando': как и ожидалось.
Я заметил, что при использовании __('somestring', get_theme_text_domain())
тема не переводила ни одну строку.
Затем я попытался понять, что происходит с отладчиком, при выполнении load_textdomain(get_theme_text_domain(), get_template_directory() . '/languages');
,
Здесь я понял, что import_from_reader($reader)
, расположенный на /wp-includes/pomo/mo.php, возвращал false, потому что, я думаю, $reader->readint32()
возвращает false. Я полагаю, это происходит потому, что либо файл не может быть найден, либо имеет некоторые проблемы.
Я проверил: файл выглядит правильно, и я даже воссоздал его пару раз, используя разные инструменты, но проблема все еще присутствует.
Это не первая тема, которую я пишу, и в основном я использую всегда одни и те же шаблоны, поэтому я действительно потерял эту проблему.
Кто-нибудь знает причину такого поведения?
Одна ошибка: функция load_theme_textdomain()
, а не load_textdomain()
. Первый используется для Темы для определения / загрузки текстового домена; я считаю, что последнее для ядра . (Плагины имеют аналогичную функцию, load_plugin_textdomain()
.)
Попробуйте использовать:
load_theme_textdomain( get_theme_text_domain(), get_template_directory() . '/languages' );