Php site en plusieurs langues

Résolu/Fermé
Dadox - 13 oct. 2008 à 11:37
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 26 nov. 2011 à 17:51
Bonjour,
je suis en train de créer un site en php. Et je voudrais pouvoir le rendre disponible en plusieurs langues.
j'ai vu sur plusieurs forum qu'il faut créer un fichier php par langues avec les même variables mais avec un contenue différent.

je voudrais pouvoir laisser l'utilisateur choisir la langue dans la page index.php en cliquant sur des drapeaux...

Pouvez vous me donner le code pour permettre de choisir le fichier a inclure en fonction du clic de l'utilisateur sur un des drapeaux (je souhaite utiliser les SESSION pour stocker le choix de la langue)...

Si je ne suis pas assez clair, faites le moi savoir...

Merci d'avance

Dadox
A voir également:

9 réponses

Le but justement est de ne pas avoir 3 fois la même page en langue différente...mais d'avoir une seule pages avec un include au début qui pointe vers un fichier lang.php choisit en fonction de la langue cliquer par l'utilisateur....
1
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
13 oct. 2008 à 12:17
Bonjour.

Le "truc", comme tu dis, c'est que si tu ne nous montres pas la structure actuelle de tes pages, on ne peut rien faire !

Une proposition, à modifier selon ta structure :
Passer en paramètre de tes url '?lang=fr[en]', et dans le php :
// On récupère la langue, par défaut c'est le français...
$lang = 'fr';
if (isset ($_GET['lang'])) {
   $lang = $_GET['lang']
}
[...]
// On essaye de récupérer le contenu correspondant à la langue
// On va dire que les fichiers de contenu sont de la forme "mapage_lg.php"
include ($mapage.'_'.$lang.'.php');


Tu peux aussi envisager de créer des dossiers fr/ en/ etc., qui contiendront les fichiers de contenu (avec le même nom).
Il suffirait alors de définir la racine du contenu suivant la langue...
0
"Le plus simple aurait été de faire ça dynamiquement, en stockant les traductions dans une base de données et que ta variable de Session ($_LANGUE par exemple) soit modifié à chaque clic sur un drapeau."

Comment faire pour justement modifier cette variable a chaque clic sur un drapeau ???
0
Mack95 Messages postés 64 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 19 octobre 2008 15
13 oct. 2008 à 12:51
Par exemple :
index.php
-----------
...<a href="toto.php?lang=fr"><img src="drapeau_fr alt="Langue française" /></a>...

toto.php
---------
<?php
//ouverture de la session et tout et tout
...
$_LANGUE = $_GET['lang'];
...
header("Location:index.php");
?>

C'est juste un exemple. Y'a d'autres solutions bien entendu (tout mettre dans la même page par exemple).
0
ok merci bcp, c'est tout ce que j'avais besoin de savoir...

Pour le reste, je vais essayer de me débrouiller....

Merci

Dadox
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Au secours, je remonte ce sujet qui date un peu cela dit, c'est le plus récent qu'il y ait, me semble-t-il, à ce sujet (le plupart date de 2005 ou 2006)...
Ça fait plus d'un mois que je lis des tuto' sur le net afin de faire un choix pour le site multilingue (français, anglais et russe) que j'ai à réaliser "à la main" (pas de CMS of course), et je suis un peu perdue. Moi aussi je souhaite utiliser les sessions.
Mais je bloque au niveau de la structure de mes tables dans la base de données.
Est-il possible, par exemple pour la table Accueil (la plus simple) dans laquelle je voudrais stocker plusieurs contenus de textes, tous traduits, de n'utiliser qu'une ligne (et donc qu'un id) par bloc ?
Je m'explique : pour le texte de présentation par exemple, si j'ai dans ma table les champs ID, TITRE, CONTENU_FR, CONTENU_EN et CONTENU_RU, pourrais-je les générer dans mon PHP à l'aide de session, dans la bonne langue ? Ou vaut-il mieux créer une ligne par langue, avec du coup des ID différentes (auquel cas j'ai du mal à voir comment ce sera appelé dans le PHP, mais il semblerait que ce soit souvent comme ça qu'on fait).
Je suis un peu perdue, et ça commence à urger, si vous pouviez me répondre et me dire comment vous auriez fait, ce serait sympa :)
0
Bonsoir,
Je me permet de remonté ce sujet car j'ai également opté pour une version multilingue de mon site.

J'ai choisi un script classique. Quel l'on peu apercevoir à cette page http://www.phpdebutant.org/article107.php.

On a donc un include sur chaque page qui appelle le script qui lui suivant la langue choisi appelle le fichier correspond se trouvant dans un dossier dédié.

J'ai quelques peu écourté le script (Supprimé le cookie.).

Cependant, je ne sais pas si c'est du a ça, mais le script de fonctionne pas correctement. Tout du moins pas comme je le voudrais/l'espérais.

Une fois ma page traduite, anglais par exemple, mes liens ne renvoient pas vers des pages traduites. Je me dois de cliquer de nouveau sur le drapeau pour les traduire.

Comment remédier à ceci ? Que rajouter au script ou ailleurs pour que cela fonctionne correctement ?

Je vous remercie par Avance, Amicalement, Yann.
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
25 nov. 2011 à 23:17
en résumé c'est très simple si tu veux un résultat efficace :
1 langue = 1 site (= 1 ndd) différent(s)
:)
0
Bonjour,

En gros, créer des sous domaines avec quelque chose comme : fr.monsite.com et en.monsite.com ?

J'y ai pensé aussi. Mais au vu de la structure de mon site j'ai opté pour l'autre solution car elle été plus adéquate.

Tout passe par les variables à l'heure actuelle, donc je pensais qu'une de plus (la langue) ne gênerait pas trop ..

(index.php?page=$page par exemple)

Je vais continuer à chercher.

Merci de votre aide. Bien amicalement, Yann.
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
26 nov. 2011 à 15:14
"En gros, créer des sous domaines avec quelque chose comme : fr.monsite.com et en.monsite.com ? "
non !
1ndd différent pour chaque langue ;)
0
hum, plus un truc comme monsite.com & mysite.com ?

M'enfin c'est pas trop le but rechercher dans mon cas.

Je ne tiens pas à écarter mes visiteurs du site principal.

De plus, je ne suis pas sur que niveau réf. google apprécie ..
0
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
26 nov. 2011 à 16:17
de la théorie à la pratique:
https://www.unesourisetmoi.info/pages/internationalisation.php
prends le temps de bien lire jusqu'en bas ...
;)
0
J'ai bien lu jusqu'en bas. Donc c'est mieux mais c'est pas mieux pour le ref, car n'y a t-il pas duplicate content dans un tel cas ?

Sinon, pour ce qui est de mon fameux problème, devrais-je donc tout mettre dans des div ?

encore merci.
0
Mack95 Messages postés 64 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 19 octobre 2008 15
13 oct. 2008 à 11:39
Tu ne peux pas plutot mettre tes drapeaux en tant que lien vers ta page Php ?

Le plus simple aurait été de faire ça dynamiquement, en stockant les traductions dans une base de données et que ta variable de Session ($_LANGUE par exemple) soit modifié à chaque clic sur un drapeau.
-2
Mack95 Messages postés 64 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 19 octobre 2008 15
13 oct. 2008 à 12:25
Dans ce cas, créer toi une base de données avec toutes les traductions. Ton index.php devra contenir la mise en forme de ta page puis que des variable de sessions Php pour le contenu.. Dans ton langue.php tu remplis les variables de sessions par le contnu trouvé en fonction de la langue.

Je t'enverai un exemple si j'ai le temps ce soir car j'ai du mal m'exprimer
-3