/** * Загружаем язык * @param null|string $lang * @throws \Exception */ public static function checkLanguage($lang = null) { if ($lang !== null) { $file = LIW_WEB . 'config/languages/' . $lang . '/' . $lang . '.php'; if (file_exists($file)) { $_SESSION['language'] = $lang; Lang::add(require $file); return; } else { throw new \Exception("Файл " . $file . " не существует."); } } if (!empty($_SESSION['language'])) { $lang = $_SESSION['language']; $file = LIW_WEB . 'config/languages/' . $lang . '/' . $lang . '.php'; if (file_exists($file)) { Lang::add(require $file); return; } } if (isset($_SESSION['language'])) { unset($_SESSION['language']); } $lang = Liw::$config['def_lang']; $file = LIW_WEB . 'config/languages/' . $lang . '/' . $lang . '.php'; Lang::add(require $file); }
/** * Ajouter une nouvelle langue * * */ public function ajouter($description, $code, $url) { $lang = new Lang(); $lang->description = trim($description); $lang->code = strtolower(trim($code)); $lang->defaut = 0; if ($this->get_un_domaine_par_langue() == 1) { $lang->url = rtrim($url, "/"); } $lang->add(); ActionsModules::instance()->appel_module("ajoutlangue", $langue); }
function about($name) { $classname = $this->__getClassName($name); $path = $this->__getDriverPath($name); if (!@file_exists($path)) { return false; } require_once $path; if ($about = @call_user_func(array(&$classname, "about"))) { $about['handle'] = $name; $about['status'] = $this->fetchStatus($name); if ($about['status'] == EXTENSION_ENABLED) { Lang::add($this->__getClassPath($name) . '/lang/lang.%s.php', __LANG__); } $nav = @call_user_func(array(&$classname, 'fetchNavigation')); if ($nav != NULL) { $about['navigation'] = $nav; } if ($this->__requiresUpdate($about)) { $about['status'] = EXTENSION_REQUIRES_UPDATE; } return $about; } return false; }
*/ defined("LIW_CORE") or define("LIW_CORE", dirname(__DIR__) . DIRECTORY_SEPARATOR); defined("LIW_LANG") or define("LIW_LANG", '/home/www/blog.loc/blog/config/languages/'); /** * Проверяем, установлен ли флаг среды разработки, если ды - выставляем соотв. настройки */ if (defined('DEVELOP') && DEVELOP === true) { /** * В режиме отладки должны отображаться все ошибки */ error_reporting(E_ALL); ini_set('display_errors', 1); /** * Подключаем файл с языковыми данными для разработчика */ Lang::add(require LIW_LANG . 'dev.php'); /** * Подключаем файл helpers.php */ require_once LIW_CORE . 'core/develop/helpers.php'; } /** * Class Liw * @package liw\core * Статичный класс, в котором хранятся суперглобальные переменные (пока) */ class Liw { private static $levels = []; public static $config = []; public static $isGuest = true;
public function getJavascripts() { return array($this->getWebDir(__DIR__) . '/js/' . self::$lang . '.js', $this->getWebDir(__DIR__) . '/js/lang.js'); } public static function add($array) { self::$langtext = array_replace_recursive(self::$langtext, $array); } public static function getString($var) { $var = explode(".", $var); $tmp = self::$langtext; foreach ($var as $v) { if (isset($tmp[$v])) { $tmp = $tmp[$v]; } else { return implode(".", $var); } } $tmp = $tmp[self::$lang]; return $tmp; } public function setLang($lang = 'en') { self::$lang = $lang; $_SERVER["lang"] = $lang; } } Lang::staticConsturct(); Lang::add(array("alerts" => array("sent" => array("ru" => "СООБЩЕНИЕ ОТПРАВЛЕНО.\\n\\nВаше сообщение было успешно отправлено.\\n\\nСпасибо.", "en" => "MESSAGE SENT.\\n\\nYour message has been successfully sent.\\n\\nThank you."), "code" => array("ru" => "Неверный код подтверждения.", "en" => "Specified confirmation code is wrong."), "time" => array("ru" => "ОШИБКА. СООБЩЕНИЕ НЕ ОТПРАВЛЕНО.\\n\\nНедавно Вы уже отправляли сообщение.\\n\\nНа сайте действует ограничение по количеству отсылаемых\\nсообщений: одно сообщение раз в 10 минут.\\n\\nЭто ограничение установлено в целях борьбы со спамом.", "en" => "ERROR. MESSAGE IS NOT SENT.\\n\\nYou have sent the message already.\\n\\nYou can send only one message in 10 minutes due to\\n\\nanti-spam restrictions."), "oblg" => array("ru" => "Заполнены не все обязательные поля...", "en" => "Obligatory fields aren't filled...")), "mail" => array("generated" => array("ru" => "Это письмо было сформировано автоматически.", "en" => "This letter is automatically-generated."), "robot" => array("ru" => "{$_SERVER[project][name]}", "en" => "{$_SERVER[project][name]}")), "paging" => array("pages" => array("ru" => "Страницы", "en" => "Pages"), "showed" => array("ru" => "Показано", "en" => "Showed"), "of" => array("ru" => "из", "en" => "of")), "submit" => array("ru" => "Продолжить", "en" => "Submit"), "reset" => array("ru" => "Отмена", "en" => "Reset"), "close" => array("ru" => "Закрыть", "en" => "Close"), "no-flash" => array("ru" => "Вы должны установить Flash™ плеер чтобы увидеть ролик.", "en" => "You have to install Flash™ player in order to watch this movie."), "highlighted" => array("ru" => "В тексте выделены слова, которые Вы искали", "en" => "Keywords you searched for are highlighted"), "tags" => array("ru" => "Тэги", "en" => "Tags"), "sitemap" => array("ru" => "Карта сайта", "en" => "Site map"), "status" => array("enabled" => array("ru" => "включен", "en" => "enabled"), "disabled" => array("ru" => "выключен", "en" => "disabled"))));
/** * Load all language files (core and extensions) * * It may be possible that there are only translations for an extension, * so don't stop if there is no core translation as Symphony will always display the English strings. */ public static function loadAll() { // Load localisation file for the Symphony core $file = Lang::findLanguagePath(Symphony::lang()) . '/lang.%s.php'; $path = sprintf($file, Symphony::lang()); if (is_file($path)) { Lang::load($file, Symphony::lang(), true); } // Load localisation files for extensions foreach (new ExtensionIterator(ExtensionIterator::FLAG_STATUS, Extension::STATUS_ENABLED) as $extension) { $path = Extension::getPathFromClass(get_class($extension)) . '/lang/lang.%s.php'; if (is_file(sprintf($path, Symphony::lang()))) { Lang::add($path, Symphony::lang()); } } /*foreach(ExtensionManager::instance()->listAll() as $handle => $e){ $path = ExtensionManager::instance()->__getClassPath($handle) . '/lang/lang.%s.php'; if($e['status'] == Extension::ENABLED && file_exists(sprintf($path, Symphony::lang()))){ Lang::add($path, Symphony::lang()); } }*/ }
<?php Lang::add(array('Adminhere' => array('ru' => 'Admin здесь', 'en' => 'Admin is here')));
/** * Load all language files (core and extensions) * * It may be possible that there are only translations for an extension, * so don't stop if there is no core translation as Symphony will always display the English strings. */ public static function loadAll($ExtensionManager) { // Load localisation file for the Symphony core $file = Lang::findLanguagePath(Symphony::lang(), $ExtensionManager) . '/lang.%s.php'; $path = sprintf($file, Symphony::lang()); if (file_exists($path)) { Lang::load($file, Symphony::lang(), true); } // Load localisation files for extensions foreach ($ExtensionManager->listAll() as $handle => $e) { $path = $ExtensionManager->__getClassPath($handle) . '/lang/lang.%s.php'; if ($e['status'] == EXTENSION_ENABLED && file_exists(sprintf($path, Symphony::lang()))) { Lang::add($path, Symphony::lang()); } } }
<?php Lang::add(array("Auth" => array("session" => array("cantfinduser" => array("ru" => "Не могу найти пользователя по сессии. Обратитесь к разработчику!", "en" => "Can not find user by session. Call to developer"), "wrongpassword" => array("ru" => "Не могу найти пользователя по паролю. Попробуйте еще раз!", "en" => "Can not find user by password. Try again!"), "old" => array("ru" => "Сессия не верна или устарела!", "en" => "Session too old"), "nosession" => array("ru" => "<span style='display:none'>Сессия не верна или устарела!</span>", "en" => "<span style='display:none'>Session too old</span>"), "success" => array("ru" => "", "en" => "")), "error" => array("noconstructor" => array("ru" => "Нельзя использовать конструктор для создания класса Auth.\\nИспользуйте статический метод getInstance()", "en" => "Do not use constructor. Use static method getInstance()")))));
<?php Lang::add(array("Form" => array("captcha" => array("reload" => array("ru" => "Обновить код", "en" => "Reload captcha"), "title" => array("ru" => "Код содержит только цифры", "en" => "Code contains only digits")), "error" => array("length" => array("ru" => "Максимальное количество символов", "en" => "Maximum length"), "obligatory" => array("empty" => array("ru" => "Это поле обязательно для заполнения", "en" => "The field is obligatory"), "not-found" => array("ru" => "Значение не найдено в массиве", "en" => "Value has not been found in array"), AJAXFORM_TYPE_CHECKBOX => array("ru" => "Поле должно быть отмечено", "en" => "This field has to be checked"), AJAXFORM_TYPE_SELECT => array("ru" => "Значение должно быть выбрано", "en" => "Value has to be selected"), AJAXFORM_TYPE_RADIO => array("ru" => "Значение должно быть выбрано", "en" => "Value has to be selected"), AJAXFORM_TYPE_FILE => array("ru" => "Необходимо указать файл", "en" => "File has to be selected"), AJAXFORM_TYPE_DATE => array("ru" => "Необходимо выбрать дату", "en" => "Date has to be selected")), "checker" => array("illegal" => array("ru" => "Поле содержит запрещенные символы", "en" => "The field is contains illegal characters"), AJAXFORM_CHECK_DEFAULT => array("ru" => "", "en" => ""), AJAXFORM_CHECK_CUSTOM => array("ru" => "", "en" => ""), AJAXFORM_CHECK_NUMERIC => array("ru" => "Это поле может содержать только цифры", "en" => "Allowed characters: digits only"), AJAXFORM_CHECK_LOGIN => array("ru" => "", "en" => ""), AJAXFORM_CHECK_CODE => array("ru" => "", "en" => ""), AJAXFORM_CHECK_PHONE => array("ru" => "", "en" => ""), AJAXFORM_CHECK_MAIL => array("ru" => "", "en" => ""), AJAXFORM_CHECK_URL => array("ru" => "", "en" => "")), "format" => array(AJAXFORM_FORMAT_PHONE => array("ru" => strip_tags("Телефон должен соответствовать <a href='http://www.artlebedev.ru/kovodstvo/sections/91/#54' target='_blank'>формату</a> +7 123 456-78-90"), "en" => strip_tags("Phone should correspond to the <a href='http://en.wikipedia.org/wiki/Phone_number' target='_blank'>format</a> +7 123 456-78-90»")), AJAXFORM_FORMAT_MAIL => array("ru" => strip_tags("Адрес должен соответствовать <a href='http://ru.wikipedia.org/wiki/%D0%90%D0%B4%D1%80%D0%B5%D1%81_%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D0%BF%D0%BE%D1%87%D1%82%D1%8B' target='_blank'>формату</a> name@site.ru"), "en" => strip_tags("Mail address should correspond to the <a href='http://en.wikipedia.org/wiki/E-mail_address' target='_blank'>format</a> name@site.com")), AJAXFORM_FORMAT_URL => array("ru" => strip_tags("URL должен соответствовать <a href='http://ru.wikipedia.org/wiki/URL#.D0.A1.D1.82.D1.80.D1.83.D0.BA.D1.82.D1.83.D1.80.D0.B0_URL' target='_blank'>формату</a> и начинаться на «http://» или «www.»"), "en" => strip_tags("URL should correspond to the <a href='http://en.wikipedia.org/wiki/Url' target='_blank'>format</a> and start with «http://» or «www.»")), AJAXFORM_FORMAT_LOGIN => array("ru" => "Разрешенные символы: 0…9, a…z, «-», «_», не менее трех символов", "en" => "Allowed characters: 0…9, a…z, «-», «_», three symbols minimum"), AJAXFORM_FORMAT_CUSTOM => array("ru" => "Поле заполнено не по формату", "en" => "Field not corresponds to the format")), "code" => array("ru" => "Неверный код подтверждения", "en" => "Wrong confirmation code")))));