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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Multilang в xTemplate

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Uchenik
Отправлено: 11 Января, 2012 - 11:52:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Подскажите, как сделать чтобы 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 в которых указаны значения для ксех элементов массива.

(Отредактировано автором: 11 Января, 2012 - 12:44:19)

 
 Top
Uchenik
Отправлено: 12 Января, 2012 - 05:54:42
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Пока сделал так:
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);

Топорный вариант, но другого пока нет.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB