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

  • Автор темы Автор темы dest234
  • Дата начала Дата начала

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%}.

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

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

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

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

Смарти запись конечно ужастная но представляю себе нечто вроде {translate key="success_register_message" firstname=$field.name} которая вернет "добро пожаловать, Вася, к нам на сайт"
 
Последнее редактирование:
Которая из записей интересно "ужасная"? :) Там минимум три варианта, как это можно решить. МИНИМУМ три.
Впрочем, это всё пустой разговор, товарищ уже всё решил, пойдя по пути наименьшего сопротивления. Вместо нормального решения впаял колхоз, сохранил в БД PHP код и радуется.
 
Которая из записей интересно "ужасная"? :) Там минимум три варианта, как это можно решить. МИНИМУМ три.
Впрочем, это всё пустой разговор, товарищ уже всё решил, пойдя по пути наименьшего сопротивления. Вместо нормального решения впаял колхоз, сохранил в БД PHP код и радуется.
Если есть возможность что-то сделать проще, то не вижу смысла это дело усложнять. Вместо того, чтобы разводить неуместную иронию, лучше бы ответили на ранее поставленный мною вопрос. Если у вас ответа на этот вопрос нету, то любая критика с вашей стороны тут, увы, неуместна.
 
@dest234, а мы не видим смысла дальше вести разговор с людьми, хранящими код в БД)
 
@dest234, а мы не видим смысла дальше вести разговор с людьми, хранящими код в БД)
А в чем проблема объяснить НОВИЧКУ что и почему(в крайнем случае хотя бы на поставленный вопрос ответить) - корона БОГА ПРОГРАММИРОВАНИЯ мешает?

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

Все эти реально ТУПЫЕ насмешки отбивают не только желание обращаться с вопросами, но и желание учиться дальше... Думаю не только у меня...
 
@dest234, знаешь как говорят, на обиженных воду возят. Давай, обижайся и дальше. Или все таки пойди и прочитай, чем же плох подход хранения кода в базе, и в частности его eval. Тема обсасывалась на данном форуме не раз.
 
отбивают [...] желание учиться дальше...
Ты так говоришь, как будто это не тебе надо учиться. Нам вообще-то только лучше, меньше конкуренции.

в чем проблема объяснить
Напиши в гугле "php eval is evil" и читай. Объяснять каждому лично то, о чем написано миллион раз, никто не будет.
 
лучше бы ответили на ранее поставленный мною вопрос
Тебе ответили, аж 2 варианта предложили:
раз
http://www.smarty.net/docsv2/en/api.register.function.tpl

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

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

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