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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!