Раньше у меня был класс, который переводил контент на нужный язык пользователя.
class Template
{ public static function evaluate($str,$arr)
{ foreach($arr as $k=>$v)
$str = str_replace("{_".$k."_}", $v,$str);
return $str; }
}
т.е. были main.lang.php файлы, а выводилось всё вот так
print Template::evaluate($menu,$lang);
Подскажите можно ли сделать что-то такое в xTemplate? Т.е. чтобы в зависимости от языка пользователя подключался нужный lang, и всё переводилось?
Спустя 2 минуты, 37 секунд (11.01.2012 - 14:22) Uchenik написал(а):
как у меня сейчас всё работает через XTemplate
в шаблоне пишу {TEXT.HELLO} в скрипте создаю массив
в шаблоне пишу {TEXT.HELLO} в скрипте создаю массив
$tpl = new Template($_SERVER['DOCUMENT_ROOT'].'/templates/default/index.tpl');
$arr = array
(
'HELLO' => '',
);
и вывожу
$tpl->assign('TEXT', $arr);
$tpl->parse($block);
$tpl->out($block);
Спустя 2 часа, 47 минут, 10 секунд (11.01.2012 - 17:09) SlavaFr написал(а):
не имею понятия о этой темплате, но наверное так
foreach($lang as $k=>$v){
$tpl->assign($k,$v);
}
Спустя 13 часов, 45 минут, 23 секунды (12.01.2012 - 06:55) Uchenik написал(а):
Пока сделал так:
1. подключаем класс, который переводит на нужный язык
вот сам класс:
2. Прогоняем текст через класс
3.Результат обработки закидываем в массив, который передаётся в другой класс для дальнейшей обработки и выводи пользователю
Топорный вариант, но другого пока нет.
1. подключаем класс, который переводит на нужный язык
require ('system/classes/lang.class.php');
вот сам класс:
class Lang
{ public static function evaluate($str,$arr)
{ foreach($arr as $k=>$v)
$str = str_replace("{".$k."}", $v,$str);
return $str; }
}
2. Прогоняем текст через класс
$hello = Lang::evaluate('{text.hello}',$L);
3.Результат обработки закидываем в массив, который передаётся в другой класс для дальнейшей обработки и выводи пользователю
$arr = array
(
'HELLO' => $hello,
);
$tpl->assign('TEXT', $arr);
$tpl->parse($block);
$tpl->out($block);
Топорный вариант, но другого пока нет.