Вывод из базы данных при обработке локализации.

dest234

Новичок
Попросил меня знакомый помочь ему с сайтом, но я уперся в проблему, которую мне решить пока никак не поддается...
Конкретно проблема заключается в локализации, вернее в обработке. Изначальный движок не до конца проработан в отношении локализации. Когда часть данных заносится админом в БД, допустим на русском языке, в итоге все это и выводится в клиентскую часть на русском языке. Существует необходимость занести в ячейки БД не конечный текст, а некий "параметр", который в итоге будет выведен посредством smarty из php файла на нужном языке.
Вот пример вывода на данном этапе:
PHP:
{%foreach  from=$fields item='field' key='field_key'%}
{%assign var='value' value=$check[$field_key]%}
<tr><td{%if $field.type == 'j'%} colspan='2'{%/if%}{%if $field.type == 'i' || $field.type == 'f'%} valign='top'{%/if%}>
{%$field.name%}{%if $field.req == 1%}{%$req%}{%/if%}{%if $field.type != 'j'%}</td><td>{%/if%}
{%$field.name%} выводит из БД тот самый, нужный текст.
{%$locale.123%} таким образом выводится конкретная строчка из файла локализации.
При попытке в ячейке БД поставить значение {%$locale.123%} smarty и выводит в итоге в клиентской части {%$locale.123%}.

Искал по всей сети, но никак решения этой задачи найти не смог. Буду очень благодарен за помощь.
 

AnrDaemon

Продвинутый новичок
Напишите модификатор, который будет парсить строку из БД, заменяя токены.
И, да, у вас что, сайт на Smarty2 ?
 

dest234

Новичок
Напишите модификатор, который будет парсить строку из БД, заменяя токены.
И, да, у вас что, сайт на Smarty2 ?
Да, Smarty2.
Проблема в том, что я понимаю, что нужно парсить строку из БД заменяя токены, но не совсем понимаю, как это сделать. Квалификации маловато... Я был бы очень благодарен хоть за какой нибудь пример, чтобы мне было от чего оттолкнуться.
 

AnrDaemon

Продвинутый новичок
Что ж так плохо то… Переходите на 3 уже…
нужно парсить строку из БД заменяя токены,
Нужно парсить строку, переданную в шаблон. Никого не… не, откуда она взялась.
хоть за какой нибудь пример
http://www.smarty.net/docs/en/plugins.modifiers.tpl
 

dest234

Новичок
Что ж так плохо то… Переходите на 3 уже…

Нужно парсить строку, переданную в шаблон. Никого не… не, откуда она взялась.

http://www.smarty.net/docs/en/plugins.modifiers.tpl
Вроде решилась проблемка, но немного другим путем. Не через отдельный модификатор, а посредством функции {eval}.
 

WMix

герр M:)ller
Партнер клуба
Я посоветывал бы тебе вместо 123 писать слово. $locale.FIRSTNAME заранее подразумевает что там написано, а еще лучше написать функцию которая примет "FIRSTNAME" как параметр и вернет перевод для текущей локали.

http://www.smarty.net/docsv2/en/api.register.function.tpl

Смарти запись конечно ужастная но представляю себе нечто вроде {translate key="success_register_message" firstname=$field.name} которая вернет "добро пожаловать, Вася, к нам на сайт"
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Которая из записей интересно "ужасная"? :) Там минимум три варианта, как это можно решить. МИНИМУМ три.
Впрочем, это всё пустой разговор, товарищ уже всё решил, пойдя по пути наименьшего сопротивления. Вместо нормального решения впаял колхоз, сохранил в БД PHP код и радуется.
 

dest234

Новичок
Которая из записей интересно "ужасная"? :) Там минимум три варианта, как это можно решить. МИНИМУМ три.
Впрочем, это всё пустой разговор, товарищ уже всё решил, пойдя по пути наименьшего сопротивления. Вместо нормального решения впаял колхоз, сохранил в БД PHP код и радуется.
Если есть возможность что-то сделать проще, то не вижу смысла это дело усложнять. Вместо того, чтобы разводить неуместную иронию, лучше бы ответили на ранее поставленный мною вопрос. Если у вас ответа на этот вопрос нету, то любая критика с вашей стороны тут, увы, неуместна.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@dest234, а мы не видим смысла дальше вести разговор с людьми, хранящими код в БД)
 

dest234

Новичок
@dest234, а мы не видим смысла дальше вести разговор с людьми, хранящими код в БД)
А в чем проблема объяснить НОВИЧКУ что и почему(в крайнем случае хотя бы на поставленный вопрос ответить) - корона БОГА ПРОГРАММИРОВАНИЯ мешает?

Если вы тыкой умный, такой всезнающий но без желания помогать или отвечать на вопросы, делиться опытом - зачем тогда вообще тут было регистрироваться и что-то писать?

Все эти реально ТУПЫЕ насмешки отбивают не только желание обращаться с вопросами, но и желание учиться дальше... Думаю не только у меня...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@dest234, знаешь как говорят, на обиженных воду возят. Давай, обижайся и дальше. Или все таки пойди и прочитай, чем же плох подход хранения кода в базе, и в частности его eval. Тема обсасывалась на данном форуме не раз.
 

fixxxer

К.О.
Партнер клуба
отбивают [...] желание учиться дальше...
Ты так говоришь, как будто это не тебе надо учиться. Нам вообще-то только лучше, меньше конкуренции.

в чем проблема объяснить
Напиши в гугле "php eval is evil" и читай. Объяснять каждому лично то, о чем написано миллион раз, никто не будет.
 

fixxxer

К.О.
Партнер клуба
лучше бы ответили на ранее поставленный мною вопрос
Тебе ответили, аж 2 варианта предложили:
раз
http://www.smarty.net/docsv2/en/api.register.function.tpl

Смарти запись конечно ужастная но представляю себе нечто вроде {translate key="success_register_message" firstname=$field.name} которая вернет "добро пожаловать, Вася, к нам на сайт"
два

Ссылки дают для того, чтобы на них нажимать и читать там буквы, а не просто так.

А если в гугле просто ввести "smarty 2 translate", можно найти даже готовое
 
Сверху