IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Réécriture url pour site multilingue


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut Réécriture url pour site multilingue
    Bonjour a tous et a toutes,

    j'essaye juste de mettre en place les reecritures pour obtenir site.com/fr/presentation/mission.php pour tout le site francais ou au lieu de site.com/presentation/mission.php?lang=fr au moment où l'utilisateur change la langue.
    j'aimerais juste preciser que la variable $lang est stockee dans un cookie, faut il proceder a la reecriture par un .htaccess ou juste PHP fera l'affaire??

    j'ai lu ce tuto mais j'ai un peu de mal a l'adapter: http://g-rossolini.developpez.com/tu...h%E9orie#LII-1

    Merci pour vos reponses

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pas tout compris à ce que tu veux faire : tu veux juste changer l'URL au moment du changement de langue ou tout le temps ? Si c'est tout le temps, quel est l'intérêt de continuer à passer par un cookie ? On peut s'arranger pour que le paramètre lang figure tout le temps dans l'URL.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    Bonsoir _Mac_ et merci pour ta reponse.

    ummm, je reposerai la restion autrement alors
    pour la conception du site web en multilingue, j'ai opte pour une solution de fichiers de traduction en .xml, donc j'appelle le bon fichier selon la langue choisie, et pour se faire, j'inclus au debut de chaque page un fichier qui contient le code suivant:
    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
    function check_lang($lang)
    {
    	return preg_match('/^[[:alpha:]]+$/D', $lang) && is_file($_SERVER['DOCUMENT_ROOT'].'/new/inc/lang/'.$lang.'.xml');
    }
     
    if(isset($_GET['lang'])) // if the user changes the language
    {
    	$lang = (check_lang($_GET['lang'])) ? $_GET['lang'] : 'en';
    	setcookie('lang', $lang, time() + 31536000, '/new/'); // 1 year
    }
    else
    {
    	if(isset($_COOKIE['lang'])) $lang = (check_lang($_COOKIE['lang'])) ? $_COOKIE['lang'] : 'en';
    	else
    	{
    		list($lang, $country) = explode('-', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    		if(check_lang($lang)) setcookie('lang', $lang, time() + 31536000, '/new/');
    		else $lang = 'en';
    	}
    }
     
    $sxml = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].'/new/inc/lang/'.$lang.'.xml');
    comment pourrais je faire pour avoir en permanence une url du type monsite.com/fr/repertoir/fichier.php lorsqu'on est sur le site francais ??

    MErci

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Le plus simple, je pense, c'est de faire comme je suggérais : toujours avoir un paramètre lang dans l'URL qui reprend le premier "répertoire" de l'URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule ^(fr|uk)/(.*) /$2?lang=$1 [QSA,L]
    Cela transformera /fr/repertoire/fichier.php en /repertoire/fichier.php?lang=fr (idem avec /uk/...). Il faut donc ensuite que /repertoire/fichier.php existe ou soit réécrit en un truc qui existe.

    Après, dans ton code, tu n'utilises plus les cookies pour toujours utiliser $_GET["lang"] ou alors le test revient à comparer le paramètre d'URL lang (s'il existe) avec la valeur du cookie : si c'est différent, c'est qu'il y a eu changement de langue.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Par défaut
    Le plus simple, je pense, c'est de faire comme je suggérais : toujours avoir un paramètre lang dans l'URL qui reprend le premier "répertoire" de l'URL :
    mais pourquoi il faut toujours avoir le parametre lang dans l'URL?? ne peut on pas nous servir uniquement du cookie?
    je dis ca parce que dans le script que je t'ai donne, comme tu as pu remarquer je verifie d'abord s'il y a eu un changement de langue, puis si un cookie existe, puis les parametres du clients...

    est ce que le parametre lang dans l'URL sera vraiment utile?
    moi je voyais plutot qlq chose de simple du genre:
    monsite.com/valeur_cookie/dosier1/.../page.php

    mais peut etre qu'il y a quelque chose qui m'echape etant donne que je n'ai pas d'experience dans ce domaine!!

    apres cette breve explication, dis moi e que je fais et je suivrai tes conseils a la lettre

    une autre petite question: que penses tu d'une redirection du genre:
    quand lang = fr -> www.bonjour.org
    lang = en -> www.hello.org
    lang = es -> www.hola.org

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par redah75 Voir le message
    mais pourquoi il faut toujours avoir le parametre lang dans l'URL?? ne peut on pas nous servir uniquement du cookie?
    Parce que, comme /fr apparaît toujours dans l'URL, c'est plus facile de toujours l'ajouter dans les paramètres d'URL. Faire un truc du style "vérifie que c'est la même chose que dans le cookie et si c'est différent ajoute le en tant que paramètre" dans un .htaccess ce n'est vraiment pas évident. Après,si ton code PHP est bien fait, tu as ce code de vérification des cookies dans un seul fichier PHP et il te suffit de le modifier comme je disais. Je trouve que la modification de ce seul code PHP c'est négligeable par rapport à un fonctionnement différent du .htaccess.

    Citation Envoyé par redah75 Voir le message
    est ce que le parametre lang dans l'URL sera vraiment utile?
    Aucune idée, tout dépend du fonctionnement que tu veux implémenter. Si j'avais à le faire pour mon propre site, j'opterais pour le fonctionnement que je décris : toujours ajouter le paramètre lang dans l'URL via le .htaccess et prendre en compte la valeur de ce paramètre dans mes fichiers. Je n'utiliserais pas les cookies.

    Citation Envoyé par redah75 Voir le message
    moi je voyais plutot qlq chose de simple du genre:
    monsite.com/valeur_cookie/dosier1/.../page.php
    Je ne comprends pas ce que tu veux dire : faire <a href="/<?php echo $_COOKIE["lang"]; ?>/dossier1/..." dans le .htaccess n'a aucune intérêt car la réécriture qui y est faite ne concerne que le serveur.

    Citation Envoyé par redah75 Voir le message
    apres cette breve explication, dis moi e que je fais et je suivrai tes conseils a la lettre
    JE propose des alternatives et après tu choisis

    Citation Envoyé par redah75 Voir le message
    une autre petite question: que penses tu d'une redirection du genre:
    quand lang = fr -> www.bonjour.org
    lang = en -> www.hello.org
    lang = es -> www.hola.org
    lang correspond à quoi ? La valeur du cookie ? La valeur d'un paramètre d'URL ? Le premier /xx/ des URL ? Dans tous les cas, une telle redirection est réalisable dans un .htaccess.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. GWT et sitemaps pour site multilingue
    Par redah75 dans le forum Référencement
    Réponses: 2
    Dernier message: 13/03/2014, 20h37
  2. [2.x] Intégration bundle A2LiX pour site multilingue
    Par LEF97 dans le forum Symfony
    Réponses: 1
    Dernier message: 23/11/2013, 17h55
  3. Google Sitemap pour site multilingues
    Par redah75 dans le forum Référencement
    Réponses: 0
    Dernier message: 03/06/2012, 22h15
  4. Aide pour Site Multilingue
    Par Ikonic dans le forum Flash
    Réponses: 2
    Dernier message: 11/04/2007, 11h23
  5. [XML] XML pour site multilingue
    Par zorian dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/06/2006, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo