/** * Loads a language from cache or locales files * * @param string $languages Language code (e.g. en_US or fr_FR) */ public static function load($language) { if (!preg_match('#^([a-z]{2})(?:_[A-Z]{2})?$#', $language, $match)) { throw new Exception('Wrong language format'); } $language_base = $match[0]; // Locale of PHP setlocale(LC_ALL, $language . '.UTF-8', $language_base . '.UTF-8', 'en_EN.UTF-8'); // Retrieving the translations $last_modif = max(filemtime(CF_DIR . 'locales/' . $language), filemtime(APP_DIR . 'locales/' . $language)); self::$translations = Cache::read('translations_' . $last_modif); if (self::$translations != false) { return; } // If the translations cache doesn't exist, we create it $vars = ''; try { $vars .= File::read(CF_DIR . 'locales/' . $language); } catch (Exception $e) { throw new Exception('The L10N file "' . $language . '" for Confeature was not found'); } $vars .= "\n\n"; try { $vars .= File::read(APP_DIR . 'locales/' . $language); } catch (Exception $e) { throw new Exception('The L10N file "' . $language . '" for the App was not found'); } // Extraction of the variables and storage in the class self::$translations = self::parse($vars); Cache::write('translations_' . $last_modif, self::$translations, 3600 * 24); }
/** * Устанавливает локаль * * @param string $lang * * @return L10N_LocaleInterface */ public static function locale($lang = null) { if ($lang !== null) { Core::load($module = 'L10N.' . strtoupper($lang)); self::$locale = Core::make("{$module}.Locale"); } return self::$locale; }
public function index() { $user = System::getUser(); $form = new Form('form-profile'); $form->setAttribute('data-noajax', 'true'); $form->binding = $user; $fieldset = new Fieldset(System::getLanguage()->_('General')); $firstname = new Text('firstname', System::getLanguage()->_('Firstname')); $firstname->binding = new Databinding('firstname'); $lastname = new Text('lastname', System::getLanguage()->_('Lastname')); $lastname->binding = new Databinding('lastname'); $email = new Text('email', System::getLanguage()->_('EMail'), true); $email->binding = new Databinding('email'); $email->blacklist = $this->getListOfMailAdresses($user); $email->error_msg[4] = System::getLanguage()->_('ErrorMailAdressAlreadyExists'); $language = new Radiobox('lang', System::getLanguage()->_('Language'), L10N::getLanguages()); $language->binding = new Databinding('lang'); $fieldset->addElements($firstname, $lastname, $email, $language); $form->addElements($fieldset); $fieldset = new Fieldset(System::getLanguage()->_('Password')); $password = new Password('password', System::getLanguage()->_('Password')); $password->minlength = PASSWORD_MIN_LENGTH; $password->binding = new Databinding('password'); $password2 = new Password('password2', System::getLanguage()->_('ReenterPassword')); $fieldset->addElements($password, $password2); $form->addElements($fieldset); $fieldset = new Fieldset(System::getLanguage()->_('Settings')); $quota = new Text('quota', System::getLanguage()->_('Quota')); if ($user->quota > 0) { $quota->value = System::getLanguage()->_('QuotaAvailabe', Utils::formatBytes($user->getFreeSpace()), Utils::formatBytes($user->quota)); } else { $quota->value = System::getLanguage()->_('Unlimited'); } $quota->readonly = true; $fieldset->addElements($quota); $form->addElements($fieldset); if (Utils::getPOST('submit', false) !== false) { if (!empty($password->value) && $password->value != $password2->value) { $password2->error = System::getLanguage()->_('ErrorInvalidPasswords'); } else { if ($form->validate()) { $form->save(); System::getUser()->save(); System::getSession()->setData('successMsg', System::getLanguage()->_('ProfileUpdated')); System::forwardToRoute(Router::getInstance()->build('ProfileController', 'index')); exit; } } } else { $form->fill(); } $form->setSubmit(new Button(System::getLanguage()->_('Save'), 'floppy-disk')); $smarty = new Template(); $smarty->assign('title', System::getLanguage()->_('MyProfile')); $smarty->assign('heading', System::getLanguage()->_('MyProfile')); $smarty->assign('form', $form->__toString()); $smarty->display('form.tpl'); }
<?php L10N::registerLanguage('en', 'English');
<?php L10N::registerLanguage('de', 'Deutsch');
ob_start('ob_callback'); // Time-zone from the configuration date_default_timezone_set(Config::TIMEZONE); // Configuration of the DB if (isset(Config::$DB)) { DB::config(Config::$DB); } // Configuration of the cache if (isset(Config::$CACHE)) { Cache::config(Config::$CACHE); } // Language of the app if (!defined('LANG')) { define('LANG', Config::$LOCALES[0]); } L10N::load(LANG); // Visitor IP if (isset($_SERVER['HTTP_CLIENT_IP']) && Validation::isIP($_SERVER['HTTP_CLIENT_IP']) && !Validation::isLocalIP($_SERVER['HTTP_CLIENT_IP'])) { define('IP', $_SERVER['HTTP_CLIENT_IP']); } else { if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && Validation::isIP($_SERVER['HTTP_X_FORWARDED_FOR']) && !Validation::isLocalIP($_SERVER['HTTP_X_FORWARDED_FOR'])) { define('IP', $_SERVER['HTTP_X_FORWARDED_FOR']); } else { if (Validation::isIP($_SERVER['REMOTE_ADDR']) && !Validation::isLocalIP($_SERVER['REMOTE_ADDR'])) { define('IP', $_SERVER['REMOTE_ADDR']); } else { define('IP', '0.0.0.0'); } } } // Security : The session is wiped if the user-agent change
/** * Возвращает дату в виде строки в соответствии с локалью и падежом * * @param string $format формат * @param string $locale локаль * @param integer $variant падеж * * @return string * * @see L10N */ public function format_l10n($format, $locale = 'ru', $variant = 0) { Core::load('L10N'); L10N::locale($locale); return L10N::strftime($format, $this, $variant); }
public function edit() { $user = User::find('_id', $this->getParam('uid', 0)); if ($user == NULL) { System::displayError(System::getLanguage()->_('ErrorUserNotFound'), '404 Not Found'); } $form = new Form('form-user', Router::getInstance()->build('UsersController', 'edit', $user)); $form->binding = $user; $fieldset = new Fieldset(System::getLanguage()->_('General')); $username = new Text('username', System::getLanguage()->_('Username'), true); $username->binding = new Databinding('username'); $username->blacklist = $this->getListOfUsernames($user); $username->error_msg[4] = System::getLanguage()->_('ErrorUsernameAlreayExists'); $firstname = new Text('firstname', System::getLanguage()->_('Firstname')); $firstname->binding = new Databinding('firstname'); $lastname = new Text('lastname', System::getLanguage()->_('Lastname')); $lastname->binding = new Databinding('lastname'); $email = new Text('email', System::getLanguage()->_('EMail'), true); $email->binding = new Databinding('email'); $email->blacklist = $this->getListOfMailAdresses($user); $email->error_msg[4] = System::getLanguage()->_('ErrorMailAdressAlreadyExists'); $language = new Radiobox('lang', System::getLanguage()->_('Language'), L10N::getLanguages(), LANGUAGE); $language->binding = new Databinding('lang'); $fieldset->addElements($username, $firstname, $lastname, $email, $language); $form->addElements($fieldset); $fieldset = new Fieldset(System::getLanguage()->_('Password')); $password = new Password('password', System::getLanguage()->_('Password')); $password->binding = new Databinding('password'); $password2 = new Password('password2', System::getLanguage()->_('ReenterPassword')); $fieldset->addElements($password, $password2); $form->addElements($fieldset); if ($user->uid != System::getUser()->uid) { $fieldset = new Fieldset(System::getLanguage()->_('Settings')); $quota = new Text('quota', System::getLanguage()->_('Quota') . ' (MB)', true, 'numeric'); $quota->binding = new Databinding('quota'); $p = new Paragraph(System::getLanguage()->_('QuotaInfo')); $admin = new Radiobox('admin', System::getLanguage()->_('Admin'), array('1' => System::getLanguage()->_('YesStr'), '0' => System::getLanguage()->_('NoStr'))); $admin->binding = new Databinding('isAdmin'); $fieldset->addElements($quota, $p, $admin); $form->addElements($fieldset); } $form->setSubmit(new Button(System::getLanguage()->_('Save'), 'floppy-disk')); if ($user->uid != System::getUser()->uid) { $form->addButton(new Button(System::getLanguage()->_('DeleteUser'), 'trash', Router::getInstance()->build('UsersController', 'delete', $user))); } $form->addButton(new Button(System::getLanguage()->_('Cancel'), 'remove', Router::getInstance()->build('UsersController', 'index'))); if (Utils::getPOST('submit', false) !== false) { if ($form->validate()) { if ($quota->value < 0) { $quota->error = 'Quota must be > 0'; } else { $form->save(); $user->quota *= 1048576; // Quota is MB $user->save(); System::forwardToRoute(Router::getInstance()->build('UsersController', 'index')); exit; } } } else { $user->quota /= 1048576; // Quota is MB $form->fill(); } $smarty = new Template(); $smarty->assign('title', System::getLanguage()->_('EditUser')); $smarty->assign('heading', System::getLanguage()->_('EditUser')); $smarty->assign('form', $form); $smarty->display('form.tpl'); }