From 4d5f9f8e5171fddf96ef0492db7c091b1f8729f0 Mon Sep 17 00:00:00 2001 From: kirsan Date: Fri, 1 Jul 2011 12:08:09 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=20=D0=B8=20=D1=82=D0=BE=D1=87=D0=B5=D1=87=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D1=81=D0=B8=D0=BD=D1=82=D0=B0=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=20=D0=B2=20=D1=8F=D0=B7=D1=8B=D0=BA=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D1=85=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0=D1=85?= =?UTF-8?q?=20(=D0=BA=D0=B0=D0=BA=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D0=B5).=20=D0=AF=D0=B7=D1=8B=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D0=B3=D0=B8=D0=BD=D0=BE=D0=B2=20=D0=B4=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=BF=D0=BD=D1=8B=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=20plugins...=20=D0=9F=D0=BE=20=D1=83=D0=BC?= =?UTF-8?q?=D0=BE=D0=BB=D1=87=D0=B0=D0=BD=D0=B8=D1=8E=20=D0=BE=D0=BF=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0,=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=BE=D0=BF=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0=20'lang.use?= =?UTF-8?q?=5Fblocks'.=20=D0=9F=D1=80=D0=B8=20=D0=B2=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BE=D0=BF=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0?= =?UTF-8?q?=D1=8E=D1=82=20=D0=BE=D0=B1=D1=8B=D1=87=D0=BD=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20=D0=B2=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D0=B3=D0=B8=D0=BD=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.php | 9 ++-- engine/modules/lang/Lang.class.php | 66 ++++++++++++++++++++---------- 2 files changed, 49 insertions(+), 26 deletions(-) diff --git a/config/config.php b/config/config.php index 086eeb18..3dcefa02 100644 --- a/config/config.php +++ b/config/config.php @@ -22,7 +22,7 @@ $config['view']['skin'] = 'new'; $config['view']['name'] = 'LiveStreet - бесплатный движок социальной сети'; // название сайта $config['view']['description'] = 'LiveStreet - официальный сайт бесплатного движка социальной сети'; // seo description $config['view']['keywords'] = 'движок, livestreet, блоги, социальная сеть, бесплатный, php'; // seo keywords -$config['view']['tinymce'] = false; // использовать или нет визуальный редактор TinyMCE +$config['view']['tinymce'] = false; // использовать или нет визуальный редактор TinyMCE $config['view']['noindex'] = true; // "прятать" или нет ссылки от поисковиков, оборачивая их в тег и добавляя rel="nofollow" $config['view']['img_resize_width'] = 500; // до какого размера в пикселях ужимать картинку по щирине при загрузки её в топики и комменты $config['view']['img_max_width'] = 3000; // максимальная ширина загружаемых изображений в пикселях @@ -130,6 +130,7 @@ $config['general']['reg']['activation'] = false; // использовать а $config['lang']['current'] = 'russian'; // текущий язык текстовок $config['lang']['default'] = 'russian'; // язык, который будет использовать на сайте по умолчанию $config['lang']['path'] = '___path.root.server___/templates/language'; // полный путь до языковых файлов +$config['lang']['use_blocks'] =false; // Использование многоуровневого языкового файла (по примеру конфига) /** * Настройки ACL(Access Control List — список контроля доступа) */ @@ -442,8 +443,8 @@ $config['head']['default']['js'] = array( "___path.static.skin___/js/login.js", "___path.static.skin___/js/panel.js", "___path.static.skin___/js/messages.js", - "___path.static.skin___/js/userfeed.js", - "___path.static.skin___/js/stream.js", + "___path.static.skin___/js/userfeed.js", + "___path.static.skin___/js/stream.js", "___path.static.skin___/js/Autocompleter.LS.js", "___path.root.engine_lib___/external/MooTools_1.2/plugs/Piechart/moocanvas.js"=>array('browser'=>'IE'), ); @@ -473,7 +474,7 @@ $config['compress']['css']['template'] = "highest_compression"; /** * Параметры компрессии js-файлов */ -$config['compress']['js']['merge'] = true; // указывает на необходимость слияния файлов по указанным блокам. +$config['compress']['js']['merge'] =true; // указывает на необходимость слияния файлов по указанным блокам. $config['compress']['js']['use'] = true; // указывает на необходимость компрессии файлов. Компрессия используется только в активированном режиме слияния файлов. /** diff --git a/engine/modules/lang/Lang.class.php b/engine/modules/lang/Lang.class.php index 9f5660b1..9c2f9939 100644 --- a/engine/modules/lang/Lang.class.php +++ b/engine/modules/lang/Lang.class.php @@ -100,7 +100,7 @@ class ModuleLang extends Module { if ($sDirModule !='.' and $sDirModule !='..' and is_dir($sDirConfig.$sDirModule)) { $sFileConfig=$sDirConfig.$sDirModule.'/'.$sLangName.'.php'; if (file_exists($sFileConfig)) { - $this->AddMessages(include($sFileConfig)); + $this->AddMessages(include($sFileConfig), array('category' =>'module', 'name' =>$sDirModule)); } } } @@ -119,7 +119,7 @@ class ModuleLang extends Module { if($aFiles and count($aFiles)) { foreach ($aFiles as $sFile) { if (file_exists($sFile)) { - $this->AddMessages(include($sFile)); + $this->AddMessages(include($sFile), array('category' =>'plugin', 'name' =>$sPluginName)); } } } @@ -186,22 +186,35 @@ class ModuleLang extends Module { * @return string */ public function Get($sName,$aReplace=array()) { - if (isset($this->aLangMsg[$sName])) { - $sTranslate=$this->aLangMsg[$sName]; + if (Config::Get('lang.use_blocks') && strpos($sName, '.')) { + $sLang = &$this->aLangMsg; + $aKeys = explode('.', $sName); + foreach ($aKeys as $k) { + if (isset($sLang[$k])) { + $sLang = $sLang[$k]; + } else { + return 'NOT_FOUND_LANG_TEXT'; + } + } + } else { + if (isset($this->aLangMsg[$sName])) { + $sLang=$this->aLangMsg[$sName]; + } else { + return 'NOT_FOUND_LANG_TEXT'; + } + } - if(is_array($aReplace)&&count($aReplace)&&is_string($sTranslate)) { - foreach ($aReplace as $sFrom => $sTo) { - $aReplacePairs["%%{$sFrom}%%"]=$sTo; - } - $sTranslate=strtr($sTranslate,$aReplacePairs); - } + if(is_array($aReplace)&&count($aReplace)&&is_string($sLang)) { + foreach ($aReplace as $sFrom => $sTo) { + $aReplacePairs["%%{$sFrom}%%"]=$sTo; + } + $sLang=strtr($sLang,$aReplacePairs); + } - if(Config::Get('module.lang.delete_undefined') and is_string($sTranslate)) { - $sTranslate=preg_replace("/\%\%[\S]+\%\%/U",'',$sTranslate); - } - return $sTranslate; - } - return 'NOT_FOUND_LANG_TEXT'; + if(Config::Get('module.lang.delete_undefined') and is_string($sLang)) { + $sLang=preg_replace("/\%\%[\S]+\%\%/U",'',$sLang); + } + return $sLang; } /** @@ -209,13 +222,22 @@ class ModuleLang extends Module { * * @param array $aMessages */ - public function AddMessages($aMessages) { + public function AddMessages($aMessages, $aBlock = null) { if (is_array($aMessages)) { - if (count($this->aLangMsg)==0) { - $this->aLangMsg = $aMessages; - } else { - $this->aLangMsg = array_merge($this->aLangMsg, $aMessages); - } + if (Config::Get('lang.use_blocks') && is_array($aBlock)) { + if ($aBlock['category']) { + if (!isset($aBlock['category']) || !$aBlock['category']) {$aBlock['category'] = array();} + $this->aLangMsg[$aBlock['category']][$aBlock['name']] = $aMessages; + } else { + $this->aLangMsg [$aBlock['name']] = $aMessages; + } + } else { + if (count($this->aLangMsg)==0) { + $this->aLangMsg = $aMessages; + } else { + $this->aLangMsg = array_merge($this->aLangMsg, $aMessages); + } + } } }