Drupal7: Почему t () не работает? - PullRequest
0 голосов
/ 10 июня 2018

Я отвечаю за старый сайт на Drupal7, о котором слишком мало знаю.Этот сайт является двуязычным сайтом английский / французский.Итак, в шаблоне я добавил несколько полей со строками, которые необходимо перевести:

<div class="offer_content">
    <span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Our Firma').(': ');?></span>
    <?php echo html_entity_decode(t($fields['field_presentation_societe']->content)); ?>
    <span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Job presentation').(': ');?></span>
    <?php echo html_entity_decode(t($fields['body']->content));?>
    <span class="title" style="text-transform:uppercase;font-size:18px;"><?php echo t('Skills').(': ');?></span>
    <?php echo html_entity_decode(t($fields['field_profil_recherche']->content)); ?>

Однако на французском языке я показываю «Наша фирма» и «Навыки»... вместо перевода?Почему?

Спасибо тебе:)

1 Ответ

0 голосов
/ 11 июня 2018

Переменные не являются переводимыми.См. t -документы :

Перевод переменных

Никогда не используйте t() для перевода переменных, таких как вызов

t($text);

, если только текст, содержащийся в переменной, не был передан через t () в другом месте (например, $ text - это одна из нескольких переведенных литеральных строк в массиве).Особенно важно никогда не вызывать

t($user_text);

, где $ user_text - это некоторый текст, введенный пользователем, что может привести к межсайтовому скриптингу и другим проблемам с безопасностью.Тем не менее, вы можете использовать подстановку переменных в вашей строке, чтобы поместить переменный текст, такой как имена пользователей или ссылки на URL, в переведенный текст.Подстановка переменных выглядит следующим образом:

$text = t("@name's blog", array(
  '@name' => format_username($account),
));

По сути, вы можете поместить переменные типа @name в вашу строку, и t () заменит их очищенные значения во время перевода.(См. Страницы API локализации, на которые есть ссылки выше, и документацию для format_string () для получения подробных сведений о том, как определять переменные в вашей строке.) Затем переводчики могут перегруппировать строку так, как это необходимо для языка (например, на испанском языке это может быть «blog de@name ").


Так что вместо этого вы можете использовать Entity Translation , чтобы сделать эти поля переводимыми.После этого вы сможете перевести свой контент, и правильный перевод будет напечатан в зависимости от того, какое значение было добавлено в поле на соответствующем языке.


Или использовать i18n_string(), см. https://drupal.stackexchange.com/a/184584

...