Переводимые строки из дочерней темы, не включенные в файлы перевода

Итак, я думаю, что у меня есть все настройки для перевода, но мои переводимые строки не загружаются в .po или .pot.

В functions.php:

function opportune_child_setup() {
    load_child_theme_textdomain( 'opportune', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'opportune_child_setup' );

В стиле.css:

/*
[...]
Text Domain: opportune
*/

Переводимая строка (пример):

<label for="custom_field"><?php _e( "Company Tax ID", 'opportune' ) ?></label>

Каталог файлов перевода:

themes/opportune-child/languages/opportune.pot
themes/opportune-child/languages/pt_PT.mo
themes/opportune-child/languages/pt_PT.po

Файлы .po и .mo были созданы с помощью Poedit на основе opportune.pot в родительской теме (которая находится в аналогичном каталоге :)

themes/opportune/languages/opportune.pot

Я даже жестко запрограммировал в своем wp-config.php (хотя уже установил в WP Admin):

define('WP_LANG', 'pt_PT');

Что я делаю, чтобы увидеть, была ли строка загружена в .po или .pot: я перехожу на страницу с переводимыми строками, делаю жесткое обновление (удаление кеша), загружаю .po и .pot и затем ищу строку. Ни одна из строк никогда не загружалась.

Я использовал плагин Loco Translate, я думаю, с правильными настройками, и до сих пор безрезультатно .

Что мне не хватает? Большое спасибо!


person Gonçalo Figueiredo    schedule 09.09.2018    source источник


Ответы (1)


Во-первых, дочерние темы не должны использовать тот же текстовый домен, что и родительская тема.

Если вы используете только строки из родительской темы, просто переведите родитель. Но если вы добавляете новые строки в свои собственные файлы PHP, используйте отдельный текстовый домен.

Поэтому, если «Идентификатор налога компании» — это строка, которую вы добавили, и ее нет в родительской теме, убедитесь, что она находится в текстовом домене, соответствующем папке дочерней темы, т. е. «opportune-child».


Во-вторых, строки не загружаются автоматически в po-файлы, как вы говорите. Вы создаете свой файл .pot, извлекая строки из файлов PHP. Затем вы основываете свои файлы .po на этом. Прочтите об интернационализации WordPress, чтобы понять этот процесс.

Не создавайте файлы «на основе opportune.pot», потому что родительская тема — это отдельная сущность. Вам нужно только извлечь и загрузить строки, которые вы определили для своего ребенка. Пусть родитель позаботится о себе.


Здесь есть руководство по переводу дочерних тем: https://localise.biz/wordpress/plugin/child-themes

Полное раскрытие: я автор.

person Tim    schedule 10.09.2018