[Zend 1.x] Zend Locale plugin
Bonjour,
Je travail sur Zend 1.x, j'aurais une question ..
j'essaie de changer de langue en session mais j'ai cette erreur:
Code:
1 2
|
[Thu Jul 27 13:51:04.356520 2017] [php5:error] [pid 15842] [client 10.0.2.2:42158] PHP Fatal error: Uncaught exception 'Zend_Locale_Exception' with message 'The locale '' is no known locale' in /home/vagrant/web/.git/externals/zend/src/Zend/Locale.php:1759\nStack trace:\n#0 /home/vagrant/web/.git/externals/zend/src/Zend/Translate/Adapter.php(432): Zend_Locale::findLocale('jquery.ui.timep...')\n#1 /home/vagrant/web/application/vendors/Icar/Controller/Plugin/LanguageLogin.php(61): Zend_Translate_Adapter->setLocale('jquery.ui.timep...')\n#2 /home/vagrant/web/.git/externals/zend/src/Zend/Controller/Plugin/Broker.php(309): Icar\\Controller\\Plugin\\LanguageLogin->preDispatch(Object(Zend_Controller_Request_Http))\n#3 /home/vagrant/web/.git/externals/zend/src/Zend/Controller/Front.php(941): Zend_Controller_Plugin_Broker->preDispatch(Object(Zend_Controller_Request_Http))\n#4 /home/vagrant/web/.git/externals/zend/src/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()\n#5 /home/vagrant/web/.git/externals/zend/src/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()\n#6 /home/vagra in /home/vagrant/web/.git/externals/zend/src/Zend/Controller/Plugin/Broker.php on line 312, |
je travail aussi avec la librairie Jquery Time Picker pour changer la langue les jours de la semaine
voici mon languageLogin.php:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
class LanguageLogin extends FrontControllerPlugin
{
const REQUEST_PARAM_NAME = 'locale';
const CONFIG_PARAM_NAME = 'resources.translator.default';
public function preDispatch(\Zend_Controller_Request_Abstract $request)
{
$session = new \Zend_Session_Namespace(self::REQUEST_PARAM_NAME);
$loginSession = new \Zend_Session_Namespace(\module\Controller\Plugin\AuthenticationLogging::class);
if (isset($loginSession->logged) && !$loginSession->logged) {
return;
}
$locale = $session->__get(self::REQUEST_PARAM_NAME);
error_log("voivi le reslutat de ma variable locale1 : ".$locale);
if (!$locale && \Zend_Auth::getInstance()->hasIdentity()) {
$currentUser = \Zend_Auth::getInstance()->getIdentity()->getId();
$service = new User();
if ($currentUser) {
/** @var \module\Domain\User $userService */
$user = $service->getById($currentUser);
}
// Load lagugage from db
if (isset($user) && $user->getUserLanguage()) {
$serviceLanguage = new Language();
/** @var \module\Domain\Language $language */
$language = $serviceLanguage->getById($user->getUserLanguage());
$locale = $language->getCodeLang();
// Set the language in the current session
$session->__set(self::REQUEST_PARAM_NAME, $locale);
}
}
if (!$locale) {
$locale = \proj\Config::configParam(self::CONFIG_PARAM_NAME);
}
if (Authorization::hasIdentity()) {
$session->__set(self::REQUEST_PARAM_NAME, $locale);
}
if (strpos($locale, '_') === FALSE) {
$locale .= '_' . strtoupper($locale);
}
error_log("voivi le reslutat de ma variable locale2 : ".$locale);
if (\Zend_Registry::isRegistered(\proj\Application\Resource\Translator::REGISTRY_KEY)) {
/** @var $translator \Zend_Translate */
$translator = \Zend_Registry::get(\proj\Application\Resource\Translator::REGISTRY_KEY);
$translator->getAdapter()->setLocale($locale); //ligne 61 comme dans mon erreur plus haut..
\Zend_Validate::getDefaultTranslator()->setLocale($locale);
}
\Zend_Registry::set('Zend_Locale', new \Zend_Locale($locale));
setlocale(LC_ALL, $locale);
}
} |
la fonctionnalité developper est quand l'utilisateur choisi une langue pour la première fois
je le met en BD et la charge à chaque fois sur le choix de l'utilisateur
sinon j'ai une variable locale pour la langue par default
voici le error log de ma variable locale qui varie:
Code:
1 2 3
|
voivi le reslutat de ma variable locale1 : jquery.ui.timepicker-fr.js,
voivi le reslutat de ma variable locale2 : jquery.ui.timepicker-frl.js_JQUERY.UI.TIMEPICKER-NL.JS |
merci!
Session et problème de concatenation
Je reviens depuis juillet deja..
j'ai resolu mon souci
Le souci etait que je fesait quelque chose comme ca pour inclure un fichier JS:
Code:
1 2
|
->appendFile('/js/library/jquery/ui/locale/jquery.ui.datepicker-'.str_replace('_','-',$locale).'.js') |
et la variable je la recuperais de la session ce qui pas un souci je pense..
mais ma variable session etait ecraser par cette ligne.
J'ai du stocker la gestions des langues avec prefix,.. en BDD et le charger pour la concatenation de prefix et voila..
Merci si vous avez une explication a ce comportement je suis preneur.. ;)