Affichage d'image selon langue

Petit nouveau ! | 4 Messages

24 mai 2012, 10:03

Bonjour chère communauté et experts en PHP,

Je vous sollicite aujourd'hui dans le cadre de la conception d'un site internet. Il est conçu sous Wordpress et j'y ai installé le plugin Polylang qui permet d'avoir un site multilangues. Ce plugin permet de décliner le contenu du site dans différentes langues (articles, pages, menus, titres,...) mais pas les images.

Mon problème se situe au niveau des bannières, j'aimerai pouvoir afficher des bannières spécifiques selon la langue que l'internaute aura choisit sur le site (et pas la langue de son navigateur comme j'ai pu le voir ici et là sur les forums). Je m'explique :
J'ai créé une bannière "Découvrez nos produits" pour les 3 langues ("Discover our product" pour l'anglais et "Descubre nuestros productos" pour l'espagnol). Je suis à la recherche d'un code capable d'afficher la bannière en français lorsque l'internaute et sur la version française du site, afficher la bannière en anglais lorsqu'il est sur la version anglaise du site, etc.... pour information, l'url de l'index s'affiche ainsi pour les différentes langues :
http://www.mondomaine.com/en/ (Anglais)
http://www.mondomaine.com/fr/ (Français)
http://www.mondomaine.com/es/ (Espagnol)

J'ai trouvé un code qui se rapproche de ce que je cherche (enfin je pense, j'y connait pas grand chose en PHP, lol) mais apparemment celui-ci permet d'afficher un contenu différent selon la langue du navigateur. Hors j'aimerai afficher un contenu différent selon la langue choisit par l'internaute sur le site :
<?php
$languepreferee = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']); 

if ($languepreferee[0] == 'fr') 
     {echo 'un contenu en français';}
elseif ($languepreferee[0] == 'de') 
     {echo 'un contenu en allemand';}
elseif ($languepreferee[0] == 'es') 
     {echo 'un contenu en espagnol';}
?>
Je vous remercie par avance pour votre aide, bonne journée chère communauté.

Mammouth du PHP | 702 Messages

24 mai 2012, 10:10

alors si j'ai bien compris l'url change selon le choix de langue, c'est bien ça?

Mammouth du PHP | 702 Messages

24 mai 2012, 10:21

moi j'aurais fais comme cela:
<?php
$monUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

$langfr = "www.domaine.com/fr/";
$langes = "www.domaine.com/es/";
$langen = "www.domaine.com/en/";

similar_text($monUrl, $langfr , $p); 
if ($p > "50") {
echo " mon contenu en français" ;
}

similar_text($monUrl, $langes , $p); 
if ($p > "50") {
echo " mon contenu en espagnol" ;
}

similar_text($monUrl, $langen , $p); 
if ($p > "50") {
echo " mon contenu en anglais" ;
}
?>

ViPHP
xTG
ViPHP | 7331 Messages

24 mai 2012, 10:28

Tu peux travailler avec le contenu de $_SERVER['REQUEST_URI].
Si je me souviens bien elle ne contient pas le domaine, donc tu auras forcement en début de cette variable la langue de présente d'après ton format d'url.
Après à toi de voir si tu préfères un motif d'expression régulière ou bien jouer avec le résultat d'un explode().

Petit nouveau ! | 4 Messages

24 mai 2012, 10:43

Merci pour votre réactivité,

piotrowski-s, si j'ai bien compris, je rajoute le code ci-dessous à l'endroit de la bannière ? Sachant qu'il y a un lien :
<?php
$monUrl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

$langfr = "www.domaine.com/fr/";
$langes = "www.domaine.com/es/";
$langen = "www.domaine.com/en/";

similar_text($monUrl, $langfr , $p); 
if ($p > "50") {
echo "<a href="http://www.exemple.com><img src="images/banniere_fr.jpg"></a>" ;
}

similar_text($monUrl, $langes , $p); 
if ($p > "50") {
echo "<a href="http://www.exemple.com><img src="images/banniere_es.jpg"></a>" ;
}

similar_text($monUrl, $langen , $p); 
if ($p > "50") {
echo "<a href="http://www.exemple.com><img src="images/banniere_en.jpg"></a>" ;
?>
Merci par avance.

Mammouth du PHP | 702 Messages

24 mai 2012, 12:02

ce code est perfectible, tu dois d'abord changer tes liens et ce code en fait il étudie la similitude entre ton url et celle enregistrée comme référence.
si la similitude est de + de 50% alors il affiche l'image.

A toi de voir dans les echo il faut que tu mette le lien vers tes images et que tu changes les variables $lang par tes url spécifiques.
mais tu peux aussi faire comme le préconis xTG

Petit nouveau ! | 4 Messages

24 mai 2012, 12:27

piotrowski-s, qu'entend-tu par "celle enregistrée comme référence" ?

Et quand tu dis "tu dois d'abord changer tes liens" et "A toi de voir dans les echo il faut que tu mette le lien vers tes images et que tu changes les variables $lang par tes url spécifiques", tu entends que je change "www.domaine.com" par mon vrai nom de domaine et "www.exemple.com" par la vraie adresse du lien je présume.

Également, je voulais savoir si on pouvait insérer dans la balise echo, un lien+image comme je l'ai mis dans mon exemple "<a href="http://www.exemple.com><img src="images/banniere_fr.jpg"></a>" ?

Merci par avance.

Mammouth du PHP | 702 Messages

24 mai 2012, 15:17

sauf que dans la balise echo tu dois bien faire attention aux quotes qui sont les guillemets, ety pour les liens je ne connais pas ton domaines, a toi de remplacer.

Petit nouveau ! | 4 Messages

24 mai 2012, 15:23

Ok, merci beaucoup, je vais tester et je vous tient informé.

Eléphant du PHP | 63 Messages

18 sept. 2015, 03:35

salut moi je cherche a afficher une image selon la langue stocker dans la base de données user_lang
je dois faire $requet==( SELECT * FROM $users where user_lang ?

et après je dois faire un if ? genre
if $requet == en  afficherl' imageFR.png
else if 
is $requet==de afficher l' imageDE.png
sinon dans mon header apparait

Code : Tout sélectionner

<!DOCTYPE html> <html dir="ltr" lang="fr" xml:lang="fr"> <head>
je voulais savoir si il etait possible d afficher l image en function de la langue a partir de cette endroit par un script par exemple
if lang="fr" afficherl' imageFR.png

je suis pas developer je cherche a comprendre qu'elle sont les possibilities d arriver au but final sans que ce soit compliquer a faire pour un amateur,

merci
dryland

Mammouth du PHP | 737 Messages

21 sept. 2015, 10:34

Bonjour,

@samy : de mémoire wordpress propose de récupérer la langue en cours sinon on peut splitter l'url si la variable de langue ne bouge pas. Idem si la langue est stockée en base...

@dryland : préférable d'ouvrir ton propre topic/issue. Autrement oui tu peux switcher ta variable de langue et ainsi déterminer l'image. On peut également récupérer les balises, éléments via javascript, jquery... pour l'image tu peux définir la variable et juste jouer avec le nom de tes images...

Mega
;)
Dyslexics are teople poo

Eléphant du PHP | 63 Messages

22 sept. 2015, 10:09

salut Mega Merci ok je vais refaire mon post avant je vais essayer de refaire mon code qui ne fonctionne pas mais normal je debute je fais plein de grosse erreurs.