protected function _initLanguage() { $locale = new Zend_Locale('de_AT'); $translator = new Zend_Translate('array', APPLICATION_PATH . '/../resources/languages', 'de', array('scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); Zend_Locale::setDefault($locale); }
protected function startLocale() { require_once "Zend/Translate.php"; // silenciando strict até arrumar zend_locale date_default_timezone_set("America/Sao_Paulo"); $i18n = new Zend_Translate('gettext', $this->config->system->path->base . '/lang/pt_BR.mo', 'pt_BR'); Zend_Registry::set('i18n', $i18n); $translation_files = $this->config->system->path->base . "/lang/"; foreach (scandir($translation_files) as $filename) { // Todos os arquivos .php devem ser classes de descrição de modulos if (preg_match("/.*\\.mo\$/", $filename)) { $translation_id = basename($filename, '.mo'); if ($translation_id != "pt_BR") { $i18n->addTranslation($translation_files . "/{$filename}", $translation_id); } } } require_once "Zend/Locale.php"; if (Zend_Locale::isLocale($this->config->system->locale)) { $locale = $this->config->system->locale; } else { $locale = "pt_BR"; } Zend_Registry::set('Zend_Locale', new Zend_Locale($locale)); Zend_Locale::setDefault($locale); Zend_Locale_Format::setOptions(array("locale" => $locale)); $i18n->setLocale($locale); Zend_Registry::set("Zend_Translate", $i18n); $zend_validate_translator = new Zend_Translate_Adapter_Array($this->config->system->path->base . "/lang/Zend_Validate/{$locale}/Zend_Validate.php", $locale); Zend_Validate_Abstract::setDefaultTranslator($zend_validate_translator); }
protected function _initTraslator() { $siteOptions = $this->getOption('site'); $translator = new Zend_Translate('array', APPLICATION_PATH . DIRECTORY_SEPARATOR . 'languages', $siteOptions['default']['language'], array('scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); return $translator; }
protected function _initValidateMessages() { if (!$this->hasPluginResource('message')) { return; } $this->bootstrap('message'); Zend_Validate_Abstract::setDefaultTranslator($this->getResource('message')); }
public function _initTranslate() { try { $translate = new Zend_Translate('Array', APPLICATION_PATH . '/languages/es/Zend_Validate.php', 'pt_BR'); Zend_Validate_Abstract::setDefaultTranslator($translate); } catch (Exception $e) { die($e->getMessage()); } }
/** @brief Changement de langue. * * Exploitation du cache de l'application pour stocker l'instance de Zend_Translate correspondant. * Si le cache n'est pas présent, une nouvelle instance est créée, puis stockée dans le cache de Zend_Translate. * * @see Controller/Plugin/Zend_Controller_Plugin_Abstract::routeShutdown() * @throws exception Projet_Exception en cas d'erreur au cours de la requête. * @return void. */ public function routeShutdown(Zend_Controller_Request_Abstract $request) { parent::routeShutdown($request); // Récupération du paramètre de langue passée dans l'URL $sLocal = $this->getRequest()->getParam('language') ? $this->getRequest()->getParam('language') : self::DEFAULT_LANGUAGE; // Récupération du local dans une combinaison du type "fr_FR" $aLanguage = explode("_", $sLocal); $sLanguage = isset($aLanguage[0]) ? $aLanguage[0] : self::DEFAULT_LANGUAGE; # Récupération de "fr" $sCountry = isset($aLanguage[1]) ? $aLanguage[1] : self::DEFAULT_COUNTRY; # Récupération de "FR" // Fonctionnalité réalisée si le fichier de langue n'existe pas if (!file_exists(LANGUAGE_PATH . $sLanguage . '.ini')) { $sLanguage = self::DEFAULT_LANGUAGE; } // Récupération du cache de la langue en cours dans le cache de Zend_Translate if ((bool) APP_CACHE) { $oCacheTranslate = Zend_Translate::getCache(); $oTranslate = $oCacheTranslate->load($sLanguage); } else { $oTranslate = null; } // Fonctionnalité réalisé si if (empty($oTranslate)) { // Initialisation de la langue try { // Chargement du Zend_Translate $oTranslate = new Zend_Translate(array('adapter' => 'ini', 'content' => LANGUAGE_PATH . $sLanguage . '.ini', 'locale' => $sLocal)); $sFichier = LANGUAGE_PATH . $sLanguage . '.php'; if (file_exists($sFichier)) { //traduction des erreurs de formulaires $oTranslate->addTranslation(array('content' => new Zend_Translate('array', $sFichier, $sLanguage))); } if ((bool) APP_CACHE) { // Enregistrement de la langue dans le cache $oCacheTranslate = Zend_Translate::getCache(); $oCacheTranslate->save($oTranslate, $sLanguage); } } catch (Exception $e) { if ((bool) APP_CACHE) { // Suppression du cache $oCacheTranslate->remove($sLanguage); } // Création d'une exception au niveau du projet die($e->getMessage()); throw new Projet_Exception($e->getMessage(), __METHOD__, $e); } } // Enregistrement du Zend_Translate dans les fonctionnalités de l'application Zend_Registry::set("Zend_Locale", $sLocal); Zend_Registry::set("Zend_Translate", $oTranslate); // Potentiellement inutile vu la ligne précédente... Zend_Form::setDefaultTranslator($oTranslate); Zend_Validate_Abstract::setDefaultTranslator($oTranslate); // Language par défaut pour toutes les routes Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('language', $sLocal); }
protected function _initTranslation() { $bootstrap = $this->getApplication(); $bootstrap->bootstrap('translate'); $translator = $bootstrap->getResource('translate'); if (method_exists($this, 'connect')) { $translator->connect(); } Zend_Validate_Abstract::setDefaultTranslator($translator); }
protected function _initLocale() { Zend_Loader::loadClass('Zend_Locale'); Zend_Locale::setDefault('fr'); $session = new Zend_Session_Namespace(); $session->locale = !empty($session->locale) ? $session->locale : DEFAULT_LOCALE; $translator = new Zend_Translate(array('adapter' => 'array', 'content' => APPLICATION_PATH . '/languages/' . $session->locale . '.php', 'locale' => $session->locale)); Zend_Validate_Abstract::setDefaultTranslator($translator); Zend_Form::setDefaultTranslator($translator); Zend_Validate::setDefaultTranslator($translator); Zend_Registry::set("Zend_Translate", $translator); }
/** * Defined by Zend_Application_Resource_Resource * * @return Zend_View */ public function init() { // locale Options $language = null; if (Zend_Registry::isRegistered("Zend_Locale")) { $locale = Zend_Registry::get("Zend_Locale"); $language = $locale->getLanguage() . "_" . $locale->getRegion(); } $options = $this->getOptions(); if (!is_null($language) and isset($options["translate"])) { $options["translate"]["locale"] = $language; $translator = new Zend_Translate($options["translate"]); Zend_Validate_Abstract::setDefaultTranslator($translator); } Zend_Validate::addDefaultNamespaces('ZLayer_Validate'); }
public function preDispatch(Zend_Controller_Request_Abstract $request) { parent::preDispatch($request); $Zrt = new Zend_Session_Namespace('Zrt'); if (!isset($Zrt->config->lang)) { $zl = new Zend_Locale(); $Zrt->config->lang = $zl->getLanguage(); } if ($Zrt->config->lang !== 'en' && $Zrt->config->lang !== 'de' && $Zrt->config->lang !== 'es' && $Zrt->config->lang !== 'pl') { $Zrt->config->lang = 'en'; } if (!isset($Zrt->config->idlang)) { $_idioma = new Zrt_Models_Bussines_Idioma(); $Zrt->config->idlang = $_idioma->getByPrefijo($Zrt->config->lang)->id; } $translate = new Zend_Translate(Zend_Translate::AN_GETTEXT, APPLICATION_PATH . '/configs/locale/', $Zrt->config->lang, array('scan' => Zend_Translate::LOCALE_FILENAME), $Zrt->config->lang); Zend_Registry::set('Zend_Translate', $translate); /* translate para Zend_Validate */ $translator = new Zend_Translate(Zend_Translate::AN_ARRAY, APPLICATION_PATH . '/configs/resources/languages/', $Zrt->config->lang, array('scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); /* * variables para la vista* */ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); if (null === $viewRenderer->view) { $viewRenderer->initView(); } $view = $viewRenderer->view; $view->assign('sessionZrt', $Zrt); /* * variables para la vista* */ /* translate para Zend_Validate */ /* formulario idioma */ /* fixme formulario idiomapais */ // $data = array( ); // if ( isset( $Zrt->config->lang ) ) // { // if ( isset( $Zrt->config->idlang ) ) // { // $data['idioma'] = $Zrt->config->idlang; // } // if ( isset( $Zrt->config->idpais ) ) // { // $data['pais'] = $Zrt->config->idpais; // } // } /**/ /* formulario idioma */ }
protected function _initDoctype() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_STRICT'); $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); Zend_Registry::set('config', $config); $db = Zend_Db::factory($config->resources->db); Zend_Registry::set('db', $db); $locale = new Zend_Locale($config->resources->locale->default); $translate = new Zend_Translate('array', APPLICATION_PATH . '/../data/locales/' . $locale->getLanguage($config->resources->locale->default) . '.php', $config->resources->locale->default, array('disableNotices' => TRUE)); $languages = array('en' => 'en_US'); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Registry::set('db', $db); Zend_Registry::set('languages', $languages); Zend_Registry::set('Zend_Translate', $translate); Zend_Registry::set('Zend_Locale', $locale); }
/** * Referência: * http://www.codeforest.net/multilanguage-support-in-zend-framework */ protected function _initTranslate() { $locale = new Zend_Locale(); if (!Zend_Locale::isLocale($locale, TRUE, FALSE)) { if (!Zend_Locale::isLocale($locale, FALSE, FALSE)) { throw new Zend_Locale_Exception("The locale '{$locale}' is no known locale"); } $locale = new Zend_Locale($locale); } //$locale = "pt_BR"; $translatorArray = new Zend_Translate(array('adapter' => 'array', 'content' => APPLICATION_PATH . '/../resources/languages', 'locale' => $locale, 'scan' => Zend_Translate::LOCALE_DIRECTORY)); $translate = new Zend_Translate('gettext', APPLICATION_PATH . "/langs/", $locale, array('scan' => Zend_Translate::LOCALE_DIRECTORY)); $translate->addTranslation($translatorArray); $registry = Zend_Registry::getInstance(); $registry->set('Zend_Translate', $translate); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translate); }
protected function _initValidatorTranslation() { // traduction des messages d'erreur de validation $french = array( 'notAlnum' => "'%value%' ne contient pas que des lettres et/ou des chiffres.", 'notAlpha' => "'%value%' ne contient pas que des lettres.", 'notBetween' => "'%value%' n'est pas compris entre %min% et %max% inclus.", 'notBetweenStrict' => "'%value%' n'est pas compris entre %min% et %max% exclus.", 'notSame' => "Les deux champs ne correspondent pas.", 'dateNotYYYY-MM-DD'=> "'%value%' n'est pas une date au format AAAA-MM-JJ (exemple : 2000-12-31).", 'dateInvalid' => "'%value%' n'est pas une date valide.", 'dateFalseFormat' => "'%value%' n'est pas une date valide au format JJ/MM/AAAA (exemple : 31/12/2000).", 'notDigits' => "'%value%' ne contient pas que des chiffres.", 'emailAddressInvalid' => "'%value%' n'est pas une adresse mail valide au format adresse@domaine.", 'emailAddressInvalidFormat' => "'%value%' n'est pas une adresse mail valide au format adresse@domaine.tld", 'emailAddressInvalidHostname' => "'%hostname%' n'est pas un nom d'hôte DNS valide.", 'emailAddressInvalidMxRecord' => "'%hostname%' n'accepte pas l'adresse mail '%value%'.", 'emailAddressDotAtom' => "'%localPart%' ne respecte pas le format dot-atom.", 'emailAddressQuotedString' => "'%localPart%' ne respecte pas le format quoted-string.", 'emailAddressInvalidLocalPart' => "'%localPart%' n'est pas une adresse individuelle valide.", 'notFloat' => "'%value%' n'est pas un nombre décimal.", 'notGreaterThan' => "'%value%' n'est pas strictement supérieur à '%min%'.", 'notInt'=> "'%value%' n'est pas un nombre entier.", 'notLessThan' => "'%value%' n'est pas strictement inférieur à '%max%'.", 'isEmpty' => "Ce champ est vide : vous devez le compléter.", 'stringEmpty' => "Ce champ est vide : vous devez le compléter.", 'regexNotMatch' => "'%value%' ne respecte pas le format '%pattern%'.", 'stringLengthTooShort' => "'%value%' fait moins de %min% caractères.", 'stringLengthTooLong' => "'%value%' fait plus de %max% caractères.", 'postcodeInvalid' => "'%value%' n'est pas du type attendu.", 'postcodeNoMatch' => "'%value%' n'est pas un code postal valide.", 'notPhoneNumber' => "'%value%' ne semble pas être un numéro de téléphone français valide", 'notIpAddress' => "'%value%' ne semble pas être une addresse IP valide" ); $translate = new Zend_Translate('array', $french, 'fr_FR'); Zend_Registry::set( 'translator', $translate ); Zend_Validate_Abstract::setDefaultTranslator($translate); }
/** * Initializes translator * * @return Zend_Translate_Adapter */ public function _initTranslate() { $log = new Zend_Log(); if (APPLICATION_ENV == 'development') { $log = new Zend_Log(); $log->addWriter(new Zend_Log_Writer_Firebug()); //$log->addWriter(new Zend_Log_Writer_Stream(APPLICATION_PATH . '/temporary/log/translate.log')); } else { $log->addWriter(new Zend_Log_Writer_Null()); } $params['log'] = $log; // Create the object and add a language $translate = new Zend_Translate('Array', APPLICATION_PATH . '/languages/vi/vi.php', 'vi_VN'); // Add another translation $translate->addTranslation(APPLICATION_PATH . '/languages/en/en.php', 'en_US'); // Set nb_NO as default translation $translate->setLocale('vi_VN'); Zend_Registry::set('Zend_Translate', $translate); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translate); Zend_Controller_Router_Route::setDefaultTranslator($translate); return $translate; }
/** * Set default translation object for all Zend validate objects. * * @throws iMSCP_Exception When $translator is not a Zend_Translate_Adapter instance * @param Zend_Translate_Adapter $translator Translator adapter * @return void */ public function setDefaultTranslator($translator = null) { if (null === $translator) { $translator = new iMSCP_I18n_Adapter_Zend(); } elseif (!$translator instanceof Zend_Translate_Adapter) { throw new iMSCP_Exception('$translator must be an instance of Zend_Translate_Adapter.'); } Zend_Validate_Abstract::setDefaultTranslator($translator); }
protected function _initTranslation() { $oSiteSession = new Zend_Session_Namespace("site"); $sRequestLang = null; if (!isset($sRequestLang)) { if ($oSiteSession->lang == "en") { $sRequestLang = $oSiteSession->lang; } else { $oLocale = new Zend_Locale(); $sLang = $oLocale->getLanguage(); if (in_array($sLang, array("pl", "en"))) { $this->_sBrowserLanguage = $sLang; $sRequestLang = $sLang; } else { $sRequestLang = "pl"; } } $oSiteSession->lang = $sRequestLang; } else { if (in_array($sRequestLang, array("pl", "en"))) { $oSiteSession->lang = $sRequestLang; } else { $sRequestLang = "pl"; $oSiteSession->lang = $sRequestLang; } } if ($sRequestLang == "pl") { $sArrayFilePath = APPLICATION_PATH . "/resources/languages/" . $sRequestLang . "/Zend_Validate.php"; if (file_exists($sArrayFilePath)) { $aTranslate = array("adapter" => "array", "content" => $sArrayFilePath, "locale" => $sRequestLang, "scan" => Zend_Translate::LOCALE_DIRECTORY); $oTranslator = new Zend_Translate($aTranslate); Zend_Validate_Abstract::setDefaultTranslator($oTranslator); } } if ($sRequestLang == "en") { $sArrayFilePath = APPLICATION_PATH . "/resources/languages/" . $sRequestLang . "/" . $sRequestLang . "_" . strtoupper($sRequestLang) . ".php"; if (file_exists($sArrayFilePath)) { $aTranslate = array("adapter" => "array", "content" => $sArrayFilePath, "locale" => $sRequestLang, "scan" => Zend_Translate::LOCALE_DIRECTORY); $oTranslator = new Zend_Translate($aTranslate); Zend_Registry::set("Zend_Translate", $oTranslator); Zend_Form::setDefaultTranslator($oTranslator); Zend_Validate_Abstract::setDefaultTranslator(null); } } return $sRequestLang; }
public function _initTranslate() { $translator = new Zend_Translate(array('adapter' => 'array', 'content' => '../resources/languages', 'locale' => 'pt_BR', 'scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); }
public function testCanSetGlobalDefaultTranslator() { $this->testGlobalDefaultTranslatorNullByDefault(); set_error_handler(array($this, 'errorHandlerIgnore')); $translator = new Zend_Translate('array', array(), 'en'); restore_error_handler(); Zend_Validate_Abstract::setDefaultTranslator($translator); $this->assertSame($translator->getAdapter(), Zend_Validate_Abstract::getDefaultTranslator()); }
/** * Execute validate * * @param mixed $data Input data * @access public * @return boolean Result of validation */ public function isValid($data = null) { if (!is_null($this->_validatorTranslate)) { Zend_Validate_Abstract::setDefaultTranslator($this->_validatorTranslate); } if (is_null($this->_rules)) { // Set validation rules, which is defined in sub class. $this->setRules(); } $this->_validator = new Zend_Filter_Input($this->_filters, $this->_rules); // If $data is null, use $_request data. if (is_null($data)) { $data = $this->_request; } $this->_validator->setData($data); $ret = $this->_validator->isValid(); if ($ret === false) { $errors = $this->_validator->getInvalid(); $messages = array(); if (is_array($errors)) { foreach ($errors as $fields) { foreach ($fields as $key => $val) { $messages[] = $val; } } } $this->_errorMessages = $messages; } return $ret; }
/** * * @param mixed $config * @param array $replacement * @param array $attachment * @param bool $log * @param integer $vsprintfTimes * @param callback $filter * @return bool */ public function send($config = null, $replacement = array(), $attachment = array(), $log = false, $vsprintfTimes = 1, $filter = null) { if (is_scalar($config)) { $config = $this->getConfig($config); } if (isset($config['mail'])) { $config = $config['mail']; } //TODO if (count($config) > 0 && count($attachment) > 0) { foreach ($attachment as $att) { if ($att->filename) { $extension = strtolower(pathinfo(strval($att->filename), PATHINFO_EXTENSION)); if (isset(EhrlichAndreas_Util_Mime::$MIME_TYPE[$extension])) { $att->type = EhrlichAndreas_Util_Mime::$MIME_TYPE[$extension]; } } } } if (!is_null($filter)) { if ($config[0]['zfversion'] == 1) { $tmp = Zend_Json::encode($replacement); } elseif ($config[0]['zfversion'] == 2) { $callback = array('Zend\\Json\\Json', 'encode'); $param_arr = array($tmp); $tmp = call_user_func_array($callback, $param_arr); } $tmp = base64_encode($tmp); $tmp = ' replacement=\'' . $tmp . '\''; } $send = true; foreach ($config as $conf) { $fromEmail = EhrlichAndreas_Util_Vsprintf::vsprintf($conf['from']['email'], $replacement, $vsprintfTimes); $fromName = null; $replytoEmail = null; $replytoName = null; $toEmail = array(); $toName = array(); $ccEmail = array(); $ccName = array(); $bccEmail = array(); $bccName = array(); $header = array(); $subject = null; $bodyHtml = null; $bodyText = null; if (isset($conf['from']['name'])) { $fromName = EhrlichAndreas_Util_Vsprintf::vsprintf($conf['from']['name'], $replacement, $vsprintfTimes); } if (isset($conf['replyto']['email'])) { $replytoEmail = EhrlichAndreas_Util_Vsprintf::vsprintf($conf['replyto']['email'], $replacement, $vsprintfTimes); } if (isset($conf['replyto']['name'])) { $replytoName = EhrlichAndreas_Util_Vsprintf::vsprintf($conf['replyto']['name'], $replacement, $vsprintfTimes); } if (count($conf['to']) > 0) { foreach ($conf['to'] as $key => $value) { $email = EhrlichAndreas_Util_Vsprintf::vsprintf($value['email'], $replacement, $vsprintfTimes); $name = ''; if (isset($value['name'])) { $name = EhrlichAndreas_Util_Vsprintf::vsprintf($value['name'], $replacement, $vsprintfTimes); } //TODO /* if (isset($value['name']) && $value['name'] === $name) { $name = null; } */ $toEmail[$key] = $email; $toName[$key] = $name; } } if (count($conf['cc']) > 0) { foreach ($conf['cc'] as $key => $value) { $email = EhrlichAndreas_Util_Vsprintf::vsprintf($value['email'], $replacement, $vsprintfTimes); $name = ''; if (isset($value['name'])) { $name = EhrlichAndreas_Util_Vsprintf::vsprintf($value['name'], $replacement, $vsprintfTimes); } $ccEmail[$key] = $email; $ccName[$key] = $name; } } if (count($conf['bcc']) > 0) { foreach ($conf['bcc'] as $key => $value) { $email = EhrlichAndreas_Util_Vsprintf::vsprintf($value['email'], $replacement, $vsprintfTimes); $name = ''; if (isset($value['name'])) { $name = EhrlichAndreas_Util_Vsprintf::vsprintf($value['name'], $replacement, $vsprintfTimes); } $bccEmail[$key] = $email; $bccName[$key] = $name; } } if (count($conf['header']) > 0) { foreach ($conf['header'] as $key => $value) { if (!isset($value['append'])) { $value['append'] = false; } $header[] = $value; } } /* if (isset($conf['subject']) && strlen($conf['subject']) > 0) { $subject = $conf['subject']; if (!is_null($filter)) { $subject = str_replace(' replacement=\'%replacement%\'', $tmp, $subject); } else { $subject = preg_replace('#\\[base64.*\\[\\/base64\\]#ui', '', $subject); } if (!is_null($filter)) { $subject = str_replace(' replacement=\'%replacement%\'', $tmp, $subject); $subject = EhrlichAndreas_Util_Vsprintf::vsprintf($subject, $replacement, $vsprintfTimes); } else { $subject = EhrlichAndreas_Util_Vsprintf::vsprintf($subject, $replacement, 1); $subject = preg_replace('#\\[base64.*\\[\\/base64\\]#ui', '', $subject); $subject = EhrlichAndreas_Util_Vsprintf::vsprintf($subject, $replacement, $vsprintfTimes - 1); } } * */ if (isset($conf['subject']) && strlen($conf['subject']) > 0) { $subject = $conf['subject']; if (!is_null($filter)) { $subject = str_replace(' replacement=\'%replacement%\'', $tmp, $subject); $subject = EhrlichAndreas_Util_Vsprintf::vsprintf($subject, $replacement, $vsprintfTimes); } else { for ($vsprintfTime = 0; $vsprintfTime < $vsprintfTimes; $vsprintfTime++) { $subject = preg_replace('#\\[base64.*\\[\\/base64\\]#si', '', $subject); $subject = str_replace(' replacement=\'%replacement%\'', '', $subject); $subject = str_replace(' replacement=\'\'', '', $subject); $subject = EhrlichAndreas_Util_Vsprintf::vsprintf($subject, $replacement); } } } if (!is_null($subject) && !is_null($filter)) { $subject = call_user_func_array($filter, array($subject)); } /* if (isset($conf['body']['html']) && strlen($conf['body']['html']) > 0) { $bodyHtml = $conf['body']['html']; if (!is_null($filter)) { $bodyHtml = str_replace(' replacement=\'%replacement%\'', $tmp, $bodyHtml); $bodyHtml = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyHtml, $replacement, $vsprintfTimes); } else { $bodyHtml = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyHtml, $replacement, 1); $bodyHtml = preg_replace('#\\[base64.*\\[\\/base64\\]#ui', '', $bodyHtml); $bodyHtml = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyHtml, $replacement, $vsprintfTimes - 1); } } * */ if (isset($conf['body']['html']) && strlen($conf['body']['html']) > 0) { $bodyHtml = $conf['body']['html']; if (!is_null($filter)) { $bodyHtml = str_replace(' replacement=\'%replacement%\'', $tmp, $bodyHtml); $bodyHtml = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyHtml, $replacement, $vsprintfTimes); } else { for ($vsprintfTime = 0; $vsprintfTime < $vsprintfTimes; $vsprintfTime++) { $bodyHtml = preg_replace('#\\[base64.*\\[\\/base64\\]#si', '', $bodyHtml); $bodyHtml = str_replace(' replacement=\'%replacement%\'', '', $bodyHtml); $bodyHtml = str_replace(' replacement=\'\'', '', $bodyHtml); $bodyHtml = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyHtml, $replacement); } } } if (!is_null($bodyHtml) && !is_null($filter)) { $bodyHtml = call_user_func_array($filter, array($bodyHtml)); } if (!is_null($bodyHtml)) { $bodyHtml = preg_replace('#\\r?\\n|\\r\\n?#', $conf['eol'], $bodyHtml); } /* if (isset($conf['body']['text']) && strlen($conf['body']['text']) > 0) { $bodyText = $conf['body']['text']; if (!is_null($filter)) { $bodyText = str_replace(' replacement=\'%replacement%\'', $tmp, $bodyText); $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement, $vsprintfTimes); } else { $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement, 1); $bodyText = preg_replace('#\\[base64.*\\[\\/base64\\]#ui', '', $bodyText); $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement, $vsprintfTimes - 1); } $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement, $vsprintfTimes); } * */ if (isset($conf['body']['text']) && strlen($conf['body']['text']) > 0) { $bodyText = $conf['body']['text']; if (!is_null($filter)) { $bodyText = str_replace(' replacement=\'%replacement%\'', $tmp, $bodyText); $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement, $vsprintfTimes); } else { for ($vsprintfTime = 0; $vsprintfTime < $vsprintfTimes; $vsprintfTime++) { $bodyText = preg_replace('#\\[base64.*\\[/base64\\]#si', '', $bodyText); $bodyText = str_replace(' replacement=\'%replacement%\'', '', $bodyText); $bodyText = str_replace(' replacement=\'\'', '', $bodyText); $bodyText = EhrlichAndreas_Util_Vsprintf::vsprintf($bodyText, $replacement); } } } if (!is_null($bodyText) && !is_null($filter)) { $bodyText = call_user_func_array($filter, array($bodyText)); } if (!is_null($bodyText)) { $bodyText = preg_replace('#\\r?\\n|\\r\\n?#', $conf['eol'], $bodyText); } if ($conf['zfversion'] == 1) { //require_once 'Zend/Mail.php'; $message = new Zend_Mail($conf['charset']); $message->setHeaderEncoding($conf['encoding']); } elseif ($conf['zfversion'] == 2) { $classMailMessage = 'Zend\\Mail\\Message'; $message = new $classMailMessage(); $message->setEncoding($conf['charset']); $classMimeMessage = 'Zend\\Mime\\Message'; $mimeBody = new $classMimeMessage(); $message->setBody($mimeBody); $headers = $message->getHeaders(); $headers->setEncoding('ASCII'); } $message->setFrom($fromEmail, $fromName); if (!is_null($replytoEmail)) { $message->setReplyTo($replytoEmail, $replytoName); } foreach ($toEmail as $key => $email) { $name = $toName[$key]; $message->addTo($email, $name); } foreach ($ccEmail as $key => $email) { $name = $ccName[$key]; $message->addCc($email, $name); } foreach ($bccEmail as $key => $email) { $name = $bccName[$key]; $message->addBcc($email, $name); } if ($conf['zfversion'] == 1) { foreach ($header as $key => $value) { $message->addHeader($value['name'], $value['value'], $value['append']); } } elseif ($conf['zfversion'] == 2) { $headers = $message->getHeaders(); //$headers->setEncoding($conf['charset']); foreach ($header as $key => $value) { $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader($value['name'], $value['value']); $headerTmp->setEncoding($conf['charset']); $headers->addHeader($headerTmp); } } if (!is_null($subject)) { $message->setSubject($subject); } if ($conf['zfversion'] == 1) { if (!is_null($bodyHtml)) { $message->setBodyHtml($bodyHtml, $conf['charset'], $conf['encoding']); } if (!is_null($bodyText)) { $message->setBodyText($bodyText, $conf['charset'], $conf['encoding']); } } elseif ($conf['zfversion'] == 2) { $htmlPart = null; $textPart = null; //$mimeMessage = null; if (!is_null($bodyText)) { $classMimePart = 'Zend\\Mime\\Part'; $textPart = new $classMimePart($bodyText); $textPart->type = 'text/plain'; $textPart->charset = $conf['charset']; $textPart->encoding = $conf['encoding']; $message->getBody()->addPart($textPart); $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader('content-type', 'text/plain; charset=' . $conf['charset']); $headerTmp->setEncoding('ASCII'); $headers->removeHeader('content-type'); $headers->addHeader($headerTmp); } if (!is_null($bodyHtml)) { $classMimePart = 'Zend\\Mime\\Part'; $htmlPart = new $classMimePart($bodyHtml); $htmlPart->type = 'text/html'; $htmlPart->charset = $conf['charset']; $htmlPart->encoding = $conf['encoding']; $message->getBody()->addPart($htmlPart); $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader('content-type', 'text/html; charset=' . $conf['charset']); $headerTmp->setEncoding('ASCII'); $headers->removeHeader('content-type'); $headers->addHeader($headerTmp); } /* if (!is_null($htmlPart) || !is_null($textPart)) { $mimeMessage = new Zend\Mime\Message(); } if (!is_null($htmlPart)) { $mimeMessage->addPart($htmlPart); } if (!is_null($textPart)) { $mimeMessage->addPart($textPart); } if (!is_null($mimeMessage)) { $alternativePart = new Zend\Mime\Part($mimeMessage->generateMessage()); $alternativePart->type = 'multipart/alternative'; $alternativePart->boundary = $mimeMessage->getMime()->boundary(); $alternativePart->charset = $conf['charset']; //$alternativePart->encoding = $conf['encoding']; $message->getBody()->addPart($alternativePart); } * */ } if ($conf['zfversion'] == 1) { if (isset($conf['attachment']) && strlen($conf['attachment']) > 0 && $conf['attachment']) { foreach ($attachment as $att) { $message->addAttachment($att); } } } elseif ($conf['zfversion'] == 2) { //TODO add attachements } /* * * TODO add attachements * if (count($config)>0&&count($attachment)>0) { foreach ($attachment as $att) { if ($att->filename) { $extension = strtolower(pathinfo(strval($att->filename),PATHINFO_EXTENSION)); if (isset(EhrlichAndreas_Util_Mime::$MIME_TYPE[$extension])) { $att->type = EhrlichAndreas_Util_Mime::$MIME_TYPE[$extension]; } } } } if (isset($conf['attachment'])&&strlen($conf['attachment'])>0&&$conf['attachment']) { foreach ($attachment as $att) { $mail->addAttachment($att); } } * */ if ($conf['zfversion'] == 1) { } elseif ($conf['zfversion'] == 2) { $headers = $message->getHeaders(); //$headers->setEncoding('ASCII'); $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader('Content-Transfer-Encoding', $conf['encoding']); $headerTmp->setEncoding('ASCII'); $headers->addHeader($headerTmp); if (!is_null($bodyText) && !is_null($bodyHtml)) { $headers->removeHeader('Content-Transfer-Encoding'); $headers->removeHeader('content-type'); $boundary = $message->getBody()->getMime()->boundary(); $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader('content-type', 'multipart/alternative; boundary="' . $boundary . '"'); $headerTmp->setEncoding('ASCII'); $headers->addHeader($headerTmp); } if (false && $message->getBody()->isMultiPart()) { $classGenericMultiHeader = 'Zend\\Mail\\Header\\GenericMultiHeader'; $headerTmp = new $classGenericMultiHeader('content-type', 'multipart/alternative; charset=' . $conf['charset']); $headerTmp->setEncoding('ASCII'); $headers->addHeader($headerTmp); } } /* * echo '<pre>'; var_dump ( $fromEmail, $fromName, $replytoEmail, $replytoName, $toEmail, $toName, $ccEmail, $ccName, $bccEmail, $bccName, $header, $subject, $bodyHtml, $bodyText ); //print_r($replacement); //die(); /* */ if ($conf['zfversion'] == 1) { $defaultTranslator = Zend_Validate_Abstract::getDefaultTranslator(); if (is_object($defaultTranslator)) { Zend_Validate_Abstract::setDefaultTranslator(null); $defaultTranslatorOptions = $defaultTranslator->getOptions(); $defaultTranslator->setOptions(array('logUntranslated' => false)); } } else { } $messageTransport = $conf['transport']; try { $messageTransport->send($message); $sendTmp = true; } catch (Exception $e) { $sendTmp = false; } $send = $send && $sendTmp; if ($conf['zfversion'] == 1) { if (is_object($defaultTranslator)) { $defaultTranslator->setOptions($defaultTranslatorOptions); Zend_Validate_Abstract::setDefaultTranslator($defaultTranslator); } } else { } } return $send; }
protected function _initTranslate() { $translator = new Zend_Translate(array('adapter' => 'array', 'content' => '../library/Numenor/Form/Translate', 'locale' => 'pt_BR', 'scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); }
/** * Initialize the translation system * * @return void */ protected function _initTranslator() { $this->bootstrap('Locale'); //Extract some info from the request $lang = Zend_Registry::get('Zend_Locale')->getLanguage(); $translationFile = ROOT_PATH . '/library/App/Translations/' . $lang . '.mo'; //Check if the translations file is available, if not fallback default to english if (!file_exists($translationFile)) { $translationFile = APPLICATION_PATH . '/modules/' . CURRENT_MODULE . '/translations/en.mo'; } $options = array('adapter' => 'gettext', 'content' => $translationFile, 'locale' => $lang, 'disableNotices' => App_DI_Container::get('ConfigObject')->translations->disable_notices, 'logMessage' => "Missing translation: %message%", 'logUntranslated' => App_DI_Container::get('ConfigObject')->translations->log_missing_translations); //Create a zend_log for missing translations if (App_DI_Container::get('ConfigObject')->translations->log_missing_translations) { $pathLog = ROOT_PATH . '/logs/' . CURRENT_MODULE . '/missing_translations/' . date('Ymd') . '_' . $lang . '.log'; $writer = new Zend_Log_Writer_Stream($pathLog); $logger = new Zend_Log($writer); $options['log'] = $logger; } $translate = new Zend_Translate($options); Zend_Registry::set('Zend_Translate', $translate); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translate); }
/** * @group ZF-11831 */ public function testElementsOfSubFormReceiveCorrectDefaultTranslator() { // Global default translator $trDefault = new Zend_Translate(array('adapter' => 'array', 'content' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'Default'), 'locale' => 'en')); Zend_Registry::set('Zend_Translate', $trDefault); // Translator to use for elements $trElement = new Zend_Translate(array('adapter' => 'array', 'content' => array(Zend_Validate_NotEmpty::IS_EMPTY => 'Element'), 'locale' => 'en')); Zend_Validate_Abstract::setDefaultTranslator($trElement); // Change the form's translator $form = new Zend_Form(); $form->addElement(new Zend_Form_Element_Text('foo', array('required' => true, 'validators' => array('NotEmpty')))); // Create a subform with it's own validator $sf1 = new Zend_Form_SubForm(); $sf1->addElement(new Zend_Form_Element_Text('foosub', array('required' => true, 'validators' => array('NotEmpty')))); $form->addSubForm($sf1, 'Test1'); $form->isValid(array()); $messages = $form->getMessages(); $this->assertEquals('Element', @$messages['foo'][Zend_Validate_NotEmpty::IS_EMPTY], 'Form element received wrong validator'); $this->assertEquals('Element', @$messages['Test1']['foosub'][Zend_Validate_NotEmpty::IS_EMPTY], 'SubForm element received wrong validator'); }
/** * Translation object setup */ public function setTranslationObject() { // set language if (isset($this->requestLang)) { $lg = $this->requestLang; } else { $lg = $this->config->general->lang; } if ($lg == '' || !$lg) { $lg = 'en'; } $this->registry->set('language', $lg); $translate = new Zend_Translate('csv', $this->corePath . '/application/language/en.csv', $this->config->general->lang); $translate->setLocale($this->config->general->locale); Zend_Validate_Abstract::setDefaultTranslator($translate); Zend_Form::setDefaultTranslator($translate); $this->registry->set('Zend_Translate', $translate); $path1 = $this->corePath . '/application/language/'; $path2 = Sydney_Tools::getLocalPath() . '/application/language/'; // general global translations if (is_dir($path1) && file_exists($path1 . $lg . '.csv')) { $translate->addTranslation($path1 . $lg . '.csv', $lg); } if (is_dir($path2) && file_exists($path2 . $lg . '.csv')) { $translate->addTranslation($path2 . $lg . '.csv', $lg); } // Create a log instance if ($this->debugTranslationsNotFound) { $writer = new Zend_Log_Writer_Stream(Sydney_Tools_Paths::getLogPath() . '/' . $lg . '-translation-notfound.log'); $log = new Zend_Log($writer); // Attach it to the translation instance $translate->setOptions(array('log' => $log, 'logUntranslated' => $this->config->general->env != 'PROD')); } }
protected function _initTranslate() { $language = 'pl'; $translator = new Zend_Translate(array('adapter' => 'array', 'content' => APPLICATION_PATH . '/resources/languages/', 'locale' => $language, 'scan' => Zend_Translate::LOCALE_DIRECTORY)); Zend_Validate_Abstract::setDefaultTranslator($translator); }
/** * @group ZF-9275 */ public function testZendValidateDefaultTranslatorOverridesZendTranslateDefaultTranslator() { $translate = new Zend_Translate('array', array('isEmpty' => 'translate')); Zend_Registry::set('Zend_Translate', $translate); $translateValidate = new Zend_Translate('array', array('isEmpty' => 'validate')); Zend_Validate_Abstract::setDefaultTranslator($translateValidate); $this->form->addElement('text', 'foo', array('required' => 1)); $this->form->isValid(array()); $this->assertSame(array('isEmpty' => 'validate'), $this->form->foo->getMessages()); }
protected function _initTranslate() { // If in development, log untranslated messages $params = array('scan' => Zend_Translate_Adapter::LOCALE_FILENAME, 'logUntranslated' => true); $log = new Zend_Log(); if (APPLICATION_ENV == 'development') { $log = new Zend_Log(); $log->addWriter(new Zend_Log_Writer_Firebug()); } else { $log->addWriter(new Zend_Log_Writer_Null()); } $params['log'] = $log; $translate = new Zend_Translate('Csv', APPLICATION_PATH . '/install/languages', null, $params); Zend_Registry::set('Zend_Translate', $translate); Zend_Validate_Abstract::setDefaultTranslator($translate); Engine_Sanity::setDefaultTranslator($translate); Zend_Registry::set('Locale', new Zend_Locale()); return $translate; }
/** * @group ZF-9275 */ public function testValidatorsDefaultTranslatorDoesntOverrideFormsDefaultTranslator() { $formTranslations = array('alphaInvalid' => 'Form message'); $formTranslate = new Zend_Translate('array', $formTranslations); Zend_Form::setDefaultTranslator($formTranslate); $validatorTranslations = array('alphaInvalid' => 'Validator message'); $validatorTranslate = new Zend_Translate('array', $validatorTranslations); Zend_Validate_Abstract::setDefaultTranslator($validatorTranslate); // the default validate translator should beat the registry one $this->element->addValidator('Alpha'); $this->assertFalse($this->element->isValid(123)); $messages = $this->element->getMessages(); $this->assertEquals('Form message', $messages['alphaInvalid']); }
/** * Sets a default translation object for all validation objects * * @param Zend_Translate|Zend_Translate_Adapter|null $translator */ public static function setDefaultTranslator($translator = null) { require_once 'Zend/Validate/Abstract.php'; Zend_Validate_Abstract::setDefaultTranslator($translator); }
<?php //Путь для автоподгрузки классов set_include_path(get_include_path() . PATH_SEPARATOR . ABS_PATH . '/classes/'); // Перевод сообщений об ошибках заполнения форм Zend_Form $translateValidators = array(Zend_Validate_Alnum::NOT_ALNUM => 'Введенное значение неправильное. Разрешены только латинские символы и цифры', Zend_Validate_Alnum::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста', Zend_Validate_Alpha::NOT_ALPHA => 'Введите в это поле только латинские символы', Zend_Validate_Alpha::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста', Zend_Validate_Between::NOT_BETWEEN => 'Значение должно быть в диапазоне между "%min%" и "%max%"', Zend_Validate_Between::NOT_BETWEEN_STRICT => 'Значение не находится строго между "%min%" и "%max%"', Zend_Validate_Ccnum::LENGTH => 'Значение должно быть численным значением от 13 до 19 цифр длинной', Zend_Validate_Ccnum::CHECKSUM => 'Подсчёт контрольной суммы неудался. Значение неверно', Zend_Validate_Date::INVALID => 'Неверная дата', Zend_Validate_Date::FALSEFORMAT => 'Значение не подходит по формату', Zend_Validate_Digits::NOT_DIGITS => 'Значение неправильное. Введите только цифры', Zend_Validate_Digits::STRING_EMPTY => 'Поле не может быть пустым. Заполните его, пожалуйста', Zend_Validate_EmailAddress::INVALID => 'Неправильный адрес електронной почты. Введите его в формате имя@домен', Zend_Validate_EmailAddress::INVALID_FORMAT => "Адрес электронной почты должен содержать @, точку и, минимум, два символа после точки.", Zend_Validate_EmailAddress::INVALID_HOSTNAME => '"%hostname%" неверный домен для адреса "%value%"', Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Домен "%hostname%" не имеет MX-записи об адресе "%value%"', Zend_Validate_EmailAddress::DOT_ATOM => '"%localPart%" не соответствует формату dot-atom', Zend_Validate_EmailAddress::QUOTED_STRING => '"%localPart%" не соответствует формату указанной строки', Zend_Validate_EmailAddress::INVALID_LOCAL_PART => '"%localPart%" не правильное имя для адреса, вводите адрес вида имя@домен', Zend_Validate_Float::NOT_FLOAT => 'Значение не является дробным числом', Zend_Validate_GreaterThan::NOT_GREATER => 'Значение не превышает "%min%"', Zend_Validate_Hex::NOT_HEX => 'Значение содержит в себе не только шестнадцатеричные символы', Zend_Validate_Hostname::IP_ADDRESS_NOT_ALLOWED => '"%value%" - это IP-адрес, но IP-адреса не разрешены ', Zend_Validate_Hostname::UNKNOWN_TLD => '"%value%" - это DNS имя хоста, но оно не дожно быть из TLD-списка', Zend_Validate_Hostname::INVALID_DASH => '"%value%" - это DNS имя хоста, но знак "-" находится в неправильном месте', Zend_Validate_Hostname::INVALID_HOSTNAME_SCHEMA => '"%value%" - это DNS имя хоста, но оно не соответствует TLD для TLD "%tld%"', Zend_Validate_Hostname::UNDECIPHERABLE_TLD => '"%value%" - это DNS имя хоста. Не удаётся извлечь TLD часть', Zend_Validate_Hostname::INVALID_HOSTNAME => '"%value%" - не соответствует ожидаемой структуре для DNS имени хоста', Zend_Validate_Hostname::INVALID_LOCAL_NAME => '"%value%" - адрес является недопустимым локальным сетевым адресом', Zend_Validate_Hostname::LOCAL_NAME_NOT_ALLOWED => '"%value%" - адрес является сетевым расположением, но локальные сетевые адреса не разрешены', Zend_Validate_Identical::NOT_SAME => 'Значения не совпадают', Zend_Validate_Identical::MISSING_TOKEN => 'Не было введено значения для проверки на идентичность', Zend_Validate_InArray::NOT_IN_ARRAY => 'Значение не найдено в перечисленных допустимых значениях', Zend_Validate_Int::NOT_INT => 'Значение не является целочисленным значением', Zend_Validate_Ip::NOT_IP_ADDRESS => 'Значение не является правильным IP-адресом', Zend_Validate_LessThan::NOT_LESS => 'Значение не меньше, чем "%max%"', Zend_Validate_NotEmpty::IS_EMPTY => 'Введённое значение пустое, заполните поле, пожалуйста', Zend_Validate_StringLength::TOO_SHORT => 'Длина введённого значения, меньше чем %min% симв.', Zend_Validate_StringLength::TOO_LONG => 'Длина введённого значения не должна быть больше чем %max% символов'); $translator = new Zend_Translate('Zend_Translate_Adapter_Array', $translateValidators); Zend_Validate_Abstract::setDefaultTranslator($translator); class Form_View extends Zend_Form { protected $viewScriptPrefixPath = 'classes/Form/Templates'; protected $_idSuffix = null; protected $_idPreffix = null; public function __construct($options = null) { parent::__construct($options); $view = new Zend_View(); $view->setScriptPath($_SERVER['DOCUMENT_ROOT']); $this->setView($view); //Где ищем кастомные фильтры $this->addElementPrefixPath('Form_Filter', 'Form/Filter', 'filter'); //Где ищем кастомные валидаторы $this->addElementPrefixPath('Form_Validate', 'Form/Validate', 'validate'); //По умолчанию для элементов ставим преффикс ID - имя класса объекта $this->setDefaultIdPreffix(); } public function loadDefaultDecorators() { $this->setDecorators(array('FormElements', 'Form')); $this->setSubFormDecorators(array('FormElements')); }