Мультиязычный шаблон на DLE - заготовка для плагина
Переводил недавно один шаблон с французского на русский, и подумал, почему бы не реализовать в DLE мультиязычность для шаблонов? Ведь многие текста - стандартные на всех языках, их нужно только перевести на нужный язык, это такие, как например, "ваше имя", "ваш e-mail" и т.д.. Таких стандартных встречающихся слов не много по всем файлам шаблона, и сделав один раз заготовку на все нужные языки, например, стандартные, которые есть в DLE - рус, енг, укр. Далее можно будет быстро переведя только строки в одном языковом файле - перевести шаблон в нужный язык.
Реализацию данного метода нашёл на одном форуме, но на DLE 18.0 пришлось пару переменных подправить, чтобы плагин заработал. Итак.
- Найти в файле engine/classes/templates.class.php
ниже вставитьif( stripos( $content, "{include file=" ) !== false ) { $this->include_mode = 'tpl'; $content = preg_replace_callback( "#\\{include file=['\"](.+?)['\"]\\}#i", array( &$this, 'load_file'), $content ); }
Найтиif (strpos ( $content, "[lang=" ) !== false) { $content = preg_replace_callback ( "#\\[(lang)=(.+?)\\](.*?)\\[/lang\\]#is", array( &$this, 'check_lang'), $content ); } if( strpos( $content, "{langstr=" ) !== false ) { $content = preg_replace_callback( "#\\{langstr=['\"](.+?)['\"]\\}#i", array( &$this, 'lang_include'), $content ); }
выше добавитьfunction check_device( $matches=array() ) {
function check_lang( $matches=array() ) { global $config; if ($config['langs']==$matches[2]) return $matches[3]; else return ""; } function lang_include( $matches=array() ) { global $lang; return $lang[$matches[1]]; }
- В файле language/Russian/website.lng после
$lang = array (
добавить
'text4byroot' => "Для многоязычности шаблона",
В шаблонах использовать переменную {langstr="text4byroot"}, которая выведет текст "Для многоязычности шаблона" в любом TPL файле шаблона. Так же доступен тег
[lang=Russian]пиривеД[/lang]
который в зависимости от выбранного языка будет выводить указанный текст.
Пока в свободное время занимаюсь перебросом основных переменных из файлов шаблона, когда будет собран полный плагин для хотя бы двух языков - выложу плагин. Оформление будет одним файлом плагина.
PS понятно, что иногда быстрее вручную перевести шаблон на нужный язык, но универсальный способ всегда лучше, тем более любой сможет редактирую один плагин перевести шаблон сразу на нужный язык.