1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-29 04:55:02 +03:00

Добавлена поддержка вложенности и точечного синтаксиса в языковых строках (как в конфиге). Языковые строки плагинов доступны через plugins.<plugin_name>.<key>. По умолчанию опция отключена, для включения используется опция конфига 'lang.use_blocks'. При включенной опции не работают обычные строки в плагинах.

This commit is contained in:
kirsan 2011-07-01 12:08:09 +00:00
parent 93a69f9e2f
commit 4d5f9f8e51
2 changed files with 49 additions and 26 deletions

View file

@ -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; // "прятать" или нет ссылки от поисковиков, оборачивая их в тег <noindex> и добавляя 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; // указывает на необходимость компрессии файлов. Компрессия используется только в активированном режиме слияния файлов.
/**

View file

@ -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);
}
}
}
}