SNOOPYKZ 0 Опубликовано: 3 января 2010 Рассказать Опубликовано: 3 января 2010 DLE поддерживает много языков, но проблем у меня в том, что эта поддержка находится на уровне PHP, т.е. на уровне модов. Как сделать в шаблоне метку, которая бы менялась, при обработке, на соответствующий текст в справочнике переводов? Что бы данные брались из того же справочника, что и для модов? Цитата Ссылка на сообщение Поделиться на других сайтах
SNOOPYKZ 0 Опубликовано: 4 января 2010 Рассказать Опубликовано: 4 января 2010 Автор походу ни кто не заморачивается таким вопросом Цитата Ссылка на сообщение Поделиться на других сайтах
SNOOPYKZ 0 Опубликовано: 4 января 2010 Рассказать Опубликовано: 4 января 2010 (изменено) Автор Есть такое решение: Index: templates.class.php =================================================================== --- templates.class.php (revision 12) +++ templates.class.php (working copy) @@ -52,6 +52,7 @@ } function load_template($tpl_name) { + global $lang; /**/ $this->templatename = $tpl_name; /**/ @@ -63,9 +64,14 @@ die( "Невозможно загрузить шаблон: " . $tpl_name ); return false; } - + $this->template = file_get_contents( $this->dir . DIRECTORY_SEPARATOR . $tpl_name ); + if (strpos ( $this->template, "[lang=" ) !== false) { + //$this->template = preg_replace( "#\\[lang=['\"](.+?)['\"]\\]#ies", "ins_lang('\\1')", $this->template ); + $this->template = preg_replace( "#\\[lang=['\"](.+?)['\"]\\]#ies", "isset(\$lang)&&isset(\$lang['\\1'])?\$lang['\\1']:'<span style=\"color: red; font-weight: bold; font-size: 14px\">\\1</span>'", $this->template ); + } + if (strpos ( $this->template, "[aviable=" ) !== false) { $this->template = preg_replace ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#ies", "\$this->check_module('\\1', '\\2')", $this->template ); } Тест (входные данные): <br />>>[lang="admin"]<< <br />>>[lang="admin1"]<< Тест (результат (HTML)): <br />>>Администратор<< <br />>><span style="color: red; font-weight: bold; font-size: 14px">admin1</span><< Его минусом является то, что не во всех шаблонах, обрабатывается команда (например) [lang="admin"]. К таким шаблонам относится login.tpl. Почему не знаю, пока разбираюсь. Пока, на мой взгляд, успех уже очевиден, т.к. не нужно делать шаблоны под разные языки сайта. Достаточно сделать один шаблон и ставить в места-константы команду [lang="<слово>"], где <слово> - это константа, указывающая на перевод. я подумал над случаем с login.tpl и пришел к выводу, что в ситуации когда мало времени, и спецификой данного шаблона (login.tpl, он отличается от остальных): простые вещи типа global $lang; <?=$lang["admin"]?> $admin = $lang["admin"]; <?=$admin?> не подходят, не работают, возвращается пустая строка. Даже если сделать: <?="qwe"?> Кароче, думаю проще юзать login_panel = <<<HTML ... HTML; Изменено 4 января 2010 пользователем SNOOPYKZ Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.