Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Un nom de domaine par langue avec symfony

Avec i18n la gestion d’un site multilingue est un vrai plaisir sous Symfony. Mais toutes les explications que l’on peut trouver sur le net pour mettre en place ce type de site utilisent un dossier par langue (monsite.com/es et monsite.com/fr par exemple). Il est pourtant préférable (ne serait-ce que pour le référencement) d’utiliser un nom de domaine par langue (monsite.fr et monsite.es). Voici donc quelques explications pour le faire.

Tout d’abord le mieux est de lire l’excellent tuto sur l’internationalisation de la ferme du web qui vous expliquera comment créer vos templates et vos fichiers de langues.

Ensuite il suffit de créer un filtre:
Allez dans apps/frontend/lib et créez un fichier nommé chooseLanguageFilter.class.php et ajoutez-y le code suivant:



<?php
class chooseLanguageFilter extends sfFilter {
public function execute($filterChain) {
$context = $this->getContext();
$request = $context->getRequest();
$enabled_domain = sfConfig::get('app_domain_enabled', array());
$key=array_search($request->getHost(),$enabled_domain);
if($key!==false) {
sfConfig::set('sf_current_culture', $key);
$context->getResponse()->addMeta('language', $key, true);
$context->getUser()->setCulture($key);
}
$filterChain->execute();
}
}
?>

Pour gérer les noms de domaines qui seront acceptés et les langues qui leur sont associées il faut utiliser le fichier app.yml:
Ouvrez donc le fichier apps/frontend/config/app.yml et ajoutez-y le code suivant:


# default values
all:
domain:
enabled:
fr: www.monsite.fr
es: www.monsite.es
it: www.monsite.it

Il ne reste plus qu’à activer votre filtre:
Ouvrez le fichier apps/frontend/config/filters.yml et ajoutez-y le code suivant:


chooseLanguage:
class: chooseLanguageFilter

Et voila, désormais vous avez un site multilingue utilisant un nom de domaine par langue.
Ps: pensez à vider le cache de Symfony (cc).

Poster un Commentaire

1 Commentaire sur "Un nom de domaine par langue avec symfony"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
Vincent
Invité
Vincent

Bonjour, cette manip est-elle réalisable sous Symfony 2 ?

wpDiscuz