2015-06-03 4 views
1

Я пытаюсь создать многоязычный сайт WordPress. В functions.php У меня есть пользовательские сухариwordpress _e function in function.php

$text['home'] = 'Main'; // text for Main 
$text['category'] = '%s'; // text for category 
if ($show_home_link == 1) echo sprintf($link, $home_link, $text['home']); 

Я хочу поставить функцию _e к слову «Main», генерировать .po файл и изменить слово «Main» на выбранном языке.

Я пытаюсь использовать

<?php _e('Main', TemplateName); ?> 

вместо 'Main', такие как

$text['home'] = '_e('Main', TemplateName)'; // text for Main 

, но я получаю _e ('Main', TemplateName) вместо Main.

Дайте совет, пожалуйста, как я могу это сделать? Я знаю, проблема в синтаксисе, я очень новичок в php. Спасибо.

ответ

2

С помощью <?php _e('Main', 'TemplateName'); ?> вы показываете переведенную строку Main.

Если вы хотите сохранить значение в переменной, вам необходимо использовать <?php $text['home'] = __('Main', 'TemplateName'); ?>

1

Когда вы завершаете функцию в одинарных кавычках, вы в основном просите PHP обрабатывать ее как строку литерала. Вам нужно сделать

$text['home'] = __('Main', 'TemplateName'); 

, потому что функция __() уже возвращает строку, основанную на файле PO. Вам также необходимо обернуть TemplateName в кавычки, если это имя вашей темы.

С тех пор как вы заявили, что вы очень новичок в PHP, не спешите писать свой собственный код сначала (вне WordPress) и понять синтаксис и как сначала работать с переменными. Удачи.

EDIT: Спасибо Bondye за указание, что _e эхо, а не возвращается. Некоторое время я терял прикосновение.

+1

[ '_e()'] (https://codex.wordpress.org/Function_Reference/_e) не возвращает строку , он отображает строку. Вероятно, вы ищете ['__()'] (https://codex.wordpress.org/Function_Reference/_2) –

Смежные вопросы