Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-07-2010 20:58:59

Gg
Nouveau membre
Date d'inscription: 24-08-2009
Messages: 9

[Resolu] Redirection monsite.com vers monsite.com/fr

Bonjour à tous,

Je crée un site multilingue, mes url sont de la forme:

www.monsite.com/fr pour le français
www.monsite.com/en pour l'anglais

La langue par défaut de l'utilisateur est déterminée dans mon bootstrap.
Si un internaute tape: www.monsite.com, il doit atterrir soit sur www.monsite.com/fr soit sur www.monsite.com/en mais je n'arrive pas à faire cette redirection.

Comment faire pour qu'à partir de la langue par exemple fr je redirige correctement:
www.monsite.com vers www.monsite.com/fr

Merci.

La partie du bootstrap concernant les URL:

Code:

$frontController->setControllerDirectory('./application/controllers');

$router = $frontController->getRouter();
$router->addRoute(
    "default",
    new Zend_Controller_Router_Route(
        "/:language/:action/*",
        array(
            "language"      =>  "fr",
            "controller"    =>  "index",
            "action"        =>  "index"
        )
    )
);
$frontController->setRouter($router);

Dernière modification par Gg (26-07-2010 20:53:38)

Hors ligne

 

#2 16-07-2010 08:44:29

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Resolu] Redirection monsite.com vers monsite.com/fr

Il ne faudrait pas mettre de valeur par défaut dans la langue, et à la limite dans un plugin sur le routeShutdown, si tu n'as pas de paramètre de langue initialisé, tu fais une redirection.

Hors ligne

 

#3 26-07-2010 20:52:37

Gg
Nouveau membre
Date d'inscription: 24-08-2009
Messages: 9

Re: [Resolu] Redirection monsite.com vers monsite.com/fr

Ok j'ai créé un plugin url_language.php:

Code:

<?php

require_once 'Zend/Controller/Plugin/Abstract.php';

class url_language extends Zend_Controller_Plugin_Abstract
{


public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        
        //Détermination de la langue de l'utilisateur et routage
        if ($this->getRequest()->getParam('language')!=null){
            $language = $this->getRequest()->getParam('language');
        } else {
            $language = $this->getLanguage();
            $this->_response->setRedirect('http://localhost/dossier/'.substr($language,0,2), $code=301);
            //$this->_response->setRedirect('http://localhost/dossier/fr', $code=301);
        }
        
        //Chargement des fichiers de traduction selon le langage:
        $translator = new Zend_Translate('csv', './application/translation/'.$language.'/translate_'.$language.'.csv', $language,   array('delimiter' => ';'));
        Zend_Registry::set('translator', $translator);
        Zend_Registry::set('locale', $language);
    }
    
    /**
    * Fonction de détermination de la langue utilisateur
    */
    
    public function getLanguage() {
        try{
            $Zend_Locale = new Zend_Locale(Zend_Locale::BROWSER);
            $lan = $Zend_Locale->getLanguage();
        }catch(Zend_Locale_Exception $e){
            $lan = 'fr';
        }
        return $lan;
    }
}

et dans le bootstrap:

Code:

require_once('application/plugins/url_language.php');

$frontController->registerPlugin(new url_language());

Merci.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages