Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Multilang в xTemplate
Форумы портала PHP.SU » » CMS и фреймворки » Multilang в xTemplate

Страниц (1): [1]
 

1. Uchenik - 11 Января, 2012 - 11:52:11 - перейти к сообщению
Подскажите, как сделать чтобы XTemplate воспринимал указание к использованию языка.
Сейчас вывод сделан так:
PHP:
скопировать код в буфер обмена
  1. $arr = array
  2. (
  3.     'HELLO' => $L['text.hello'] ,
  4.         );
  5. $tpl->assign('TEXT', $arr);
  6. $tpl->parse($block);
  7. $tpl->out($block);

а как теперь сделать чтобы $L['text.hello'] заменялся в зависимости от языка?
Есть файлы main.lang.php в которых указаны значения для ксех элементов массива.
2. Uchenik - 12 Января, 2012 - 05:54:42 - перейти к сообщению
Пока сделал так:
1. подключаем класс, который переводит на нужный язык
PHP:
скопировать код в буфер обмена
  1. require ('system/classes/lang.class.php');

вот сам класс:
PHP:
скопировать код в буфер обмена
  1.  class Lang
  2. { public static function evaluate($str,$arr)
  3.    { foreach($arr as $k=>$v)
  4.              $str = str_replace("{".$k."}", $v,$str);
  5.              return $str; }
  6.  }

2. Прогоняем текст через класс
PHP:
скопировать код в буфер обмена
  1. $hello = Lang::evaluate('{text.hello}',$L);

3.Результат обработки закидываем в массив, который передаётся в другой класс для дальнейшей обработки и выводи пользователю
PHP:
скопировать код в буфер обмена
  1. $arr = array
  2. (
  3.     'HELLO' => $hello,
  4.         );
  5. $tpl->assign('TEXT', $arr);
  6. $tpl->parse($block);
  7. $tpl->out($block);

Топорный вариант, но другого пока нет.

 

Powered by ExBB FM 1.0 RC1