php twig мультиязычность без gettext

Я новичок в php и пишу свою первую веб-страницу на PHP + JS без каких-либо фреймворков (возможно, позже).

У меня следующий вопрос.

Как реализовать мультиязычность в Twig без Gettext или других плагинов?

Что-то вроде этого (на чистом PHP - вопросов нет ... но как использовать в веточке)

$lang=array(
"about_site" => "о нас",
"project" => "проект",
"team" => "команда");

На самом деле у моего проекта нет ограничений. Если Gettext для меня лучшее решение - воспользуюсь им. Думал, надо будет переводить всего 5-10 слов на страницу. Использование Gettext для этой цели немного странно.


person Dmitry Novice    schedule 11.01.2015    source источник
comment
Почему ограничение на использование gettext?   -  person deceze♦    schedule 11.01.2015
comment
Когда вы говорите без gettext или других плагинов, вы имеете в виду расширения PHP или также включают расширения Twig. Уже существует расширение перевода для twig: twig.sensiolabs.org/doc/extensions/i18n .html   -  person Mathew Tinsley    schedule 11.01.2015
comment
Если Gettext для меня лучшее решение - воспользуюсь им. У моего проекта нет ограничений. Думал, надо будет переводить всего 5-10 слов на страницу. Использование Gettext для этой цели немного странно.   -  person Dmitry Novice    schedule 11.01.2015


Ответы (1)


Вы можете легко использовать массив php, подобный вашему, для перевода в twig. Просто передайте массив в шаблон веточки:

/* $twig is a is an instance of Twig_Environment */
$template = $twig->loadTemplate('yourtemplate.html');

$templateVars['trans'] = array(
  "about_site" => "о нас",
  "project" => "проект",
  "team" => "команда"
);
echo $template->render($templateVars);

И в шаблоне:

<!-- a lot of html stuff -->
<ul>
  <li><a href="#">{{ trans.about_site }}</a></li>
  <li><a href="#">{{ trans.project }}</a></li>
  <li><a href="#">{{ trans.team }}</a></li>
</ul>

Но помните, если у вас есть сложные переводы с выражениями единственного / множественного числа, переменными, выражениями даты и т. Д., Я настоятельно рекомендую вам использовать расширение twig i18n, которое построено на gettext: http://twig.sensiolabs.org/doc/extensions/i18n.html

person Mario A    schedule 24.01.2015