Как решить такое...
В базе хранятся фразы, на сайте вызываются функцией в twig
Допустим есть фраза: Привет, ХХХ. Вместо ХХХ надо вставить переменную, которая передается вторым параметром в функцию, а как?
Если фразу хранить в таком виде: Привет, {{ name }}, то при передачи переменной name в шаблон ничего не меняется и на выходе тот же "Привет, {{ name }}"
Я понимаю как подставить переменную в шаблон, но проблема в том, что эта переменная вызывается во фразе, которая хранится базе.
Фразы достаются этой функцией:
public function phrase($phrase, $language = 0) {
$defaultLanguage = $this->option('board_language');
if ($language == 0) { $language = $defaultLanguage; }
$this->db = new DataBase;
$data = $this->db->prepareFetchAssoc('SELECT `phrase_text` FROM `fox_language` WHERE phrase_code = ? AND language_code = ?', array($phrase, $language));
if ($data['phrase_text']) {
return $data['phrase_text'];
} else {
return $phrase;
}
}
Переменная в этом случае не выводится, а отображается ее вызов
Никита Колесников, сказал человек использующий твиг)) не все сразу. твоя функция должна собирать не переведенные строки и переменные и сохранять их в список, вместо не переведенной строки вставляем хэш метку и используем её в качестве ключа массива строк. потом загружаем из базы переводы для нашего массива строк и заменяем хэш метки строк на их перевод.
Твиг это да, свой шаблонизатор лень писать было)))
Ладно, это понял.
А как быть с html во фразах?
html обрабатывается если выводить фразу через echo, но тогда не рабоатет replace твига, который мне предложили использовать.
А если использовать return - все наоборот..