Page 1 sur 1

Site Multilingue

Posté : 11 juin 2010, 16:53
par MisterSnow
Bonjour à tous,

Alors voilà, j'essaye de faire un site multilingue et c'est pourquoi je me suis mis au php.
Après de multiples recherche j'ai opté pour la création de différents fichiers (langue_fr.inc.php, langue_en.inc.php) que j'ai placé dans un dossier langues.
J'ai également fait des petits drapeaux sur mes pages web pour le choix des langues.

Or j'aimerai que quand le visiteur clique sur un drapeau et choisi une langue, le texte correspondant s'affiche (pour ça j'ai fait des recherches et je devrai m'en sortir avec la balise "echo" dans le href du drapeau...).
Mais plus difficile ce que je souhaite faire c'est mettre une langue par défaut (par exemple le français) quand il arrive sur l'index ou sur une autre page et si il choisit une autre langue (par exemple l'anglais) il n'ai pas à la rechoisir plus tard et que toutes les pages du site qu'il visitera à partir de ce moment là seront en anglais.

Car après avec un simple "echo" comme décrit plu haut j'ai peur qu'il ne doive recliquer sur son drapeau a chaque changement de page... :(

Donc comment faire pour récupérer la langue choisie et que "l'echo" des pages suivantes soit directement dans la bonne langue.

En espérant que j'ai été assez clair dans la description de mon problème (sinon pour plus de détails je ne suis pas loin) et en vous remerciant pour votre aide précieuse. :)

M.S

Re: Site Multilingue

Posté : 11 juin 2010, 17:10
par Berzemus
Juste parce que c'est un sujet que je rencontre souvent, une bonne gestion des langues:
-> doit choisir une langue par défaut adaptée au visiteur (langue du navigateur, etc)
-> doit retenir le choix du visiteur entre les pages
-> doit retenir le choix du visiteur entre les visites

Re: Site Multilingue

Posté : 11 juin 2010, 18:38
par MisterSnow
Tout à fait Berzemus, c'est clairement ça.

Mais malheureusement ça ne m'aide pas :(
Ce que j'essaye de faire dans un premier temps c'est de retenir le choix du visiteur entre les pages. (je reprends tes termes qui sont bien clairs)
Après pour ce qui est de choisir une langue par défaut adaptée au visiteur et de retenir le choix du visiteur entre les visites je suppose que c'est une histoire de cookie... Il me semble avoir vu des posts sur ce sujet... Enfin ça se sera dans un 2eme temps.

Donc si qqn peut m'aiguiller dans un premier temps pour ce qui est de retenir le choix du visiteur entre les pages je suis preneur :)
Merci !

Re: Site Multilingue

Posté : 13 juin 2010, 17:00
par Berzemus
Il y à pas mille solutions, en fait.

Pour retenir le choix de langue entre les pages, soit tu utilises les variables de session ($_SESSION), soit tu adaptes les liens de la page pour que chacune d'entre-elles contienne la langue dans l'url (si tu n'es pas familier avec la re-écriture d'url, ça ne vaut pas la peine).

Pour retenir le choix de la langue entre les visites, ça se passeras sans doute par les cookies ($_COOKIE).

Re: Site Multilingue

Posté : 13 juin 2010, 17:42
par AB
Effectivement si l'url générée est déjà différenciée par l'appel de fichiers différents, l'emploi d'une variable de session est plus simple et suffisant...

Re: Site Multilingue

Posté : 13 juin 2010, 22:46
par dunbar

Re: Site Multilingue

Posté : 15 juin 2010, 09:35
par MisterSnow
Merci pour vos réponses,

J'avance petit à petit mais là il me manque un élément. J'essaye d'attribuer une variable langue à mon document entier, j'ai bien pensé à
$this->
mais malheureusement il ne fait référence qu'aux variables et fonctions de l'objet courant du coup quand je change de page ça se remet à 0.

Vous avez des idées ?
merci :wink:

M.S

Re: Site Multilingue

Posté : 15 juin 2010, 14:58
par AB
Heu on t'avais pas parlé se sessions un peu plus haut ?

Pour qu'une variable soit accessible sur tout le site (du moins sur toutes les pages commençant par session_start()) il suffit de déclarer une variable de session :
session_start();
$_SESSION['lang'] = $ma_variable_lang;
L'autre solution, comme l'a déjà dit Berzemus , serait de transmettre une variable $_GET de page en page par l'URL. Mais c'est beaucoup plus contraignant car ça te fait une variable à ne pas oublier de transmettre de page en page et puis si tu fait de l'urlrewriting il te faudra une règle de plus pour récupérer cette variable.

Par contre là où les variables de session ne seraient pas recommandées, c'est si le même fichier incluait les différentes langues. Car il serait impossible de différencier par l'adresse de la page (URL) monsite.com/presentation.php en français ou en anglais, d'où des problèmes de référencement. Et dans ce cas on utiliserait une variable $_GET pour bien avoir deux adresses différentes monsite.com/presentation.php?lang=fr et monsite.com/presentation.php?lang=en

Re: Site Multilingue

Posté : 15 juin 2010, 17:06
par MisterSnow
Effectivement, je me suis repenché sur les sessions et c'est plus clair.
Un grand merci à toi AB pour ton explication, maintenant je devrai m'en sortir sans trop de soucis :)

Je reviendrai poster au besoin !
Encore merci à tous,

M.S