Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Debutant] Creer un choix personn el si une detection automatique ne fonction ne pas

3 réponses
Avatar
GizMecano
Bonjour à toutes et à tous,

Débutant totalement en PHP, je commence actuellement la reconstruction
d'un site en tentant de créer une sorte d'interface "multi-langue". En
utilisant divers exemples de scripts trouvés ici et là sur le réseau,
j'ai donc adapté quelque chose qui me paraît fonctionnel, à savoir, un
script qui détecte les langues possibles du navigateur ou du serveur
pour afficher les pages suivantes en conséquence. Je vous le recopie
ci-dessous :

<?php
if(isset($HTTP_COOKIE_VARS['lang'])) {$lang = $HTTP_COOKIE_VARS['lang'];}
else {$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); }
if ($lang=='fr') {include('fr.php');}
elseif ($lang=='en') {include('en.php');}
elseif ($lang=='pt') {include('pt.php');}
elseif ($lang=='es') {include('es.php');}
elseif ($lang=='it') {include('it.php');}
$expire = +60*60*24*30;
setcookie("Langue", $lang, time() + $expire);
?>

Cependant, cette méthode me semble poser un problème au cas où la
réponse ne serait pas contenue dans les choix linguistiques que je
propose et qui ne sont pas encore disponible. Je pourrais, bien entendu,
choisir un affichage par défaut en ajoutant, j'imagine, avant la
création du cookie, quelque chose comme :

else {include('en.php');}

Cependant, je préférerais que la page générée par la suite affiche,
avant cette éventuelle langue par défaut, un message indiquant que la
langue que le visiteur semble utiliser n'est pas encore prise en compte
par l'interface du site, afin de lui donner la possibilité de choisir, à
ce moment, en forçant la main au cookie automatique, la langue qu'il
préfère afficher. J'ai bien entendu cherché des éléments de réponses
parmi les scripts disponibles sur le réseau, mais soit ils ne répondent
pas à la problématique que je recherche, soit je n'ai pas dû saisir
véritablement leurs fonctionnements.

Ma question principale est donc de savoir comment créer cette dernière
condition de façon correcte, sachant qui plus est qu'elle sera difficile
à tester puisque les navigateurs que j'utilise ne répondent pas à cette
variable, puisqu'ils prennent bien entendu en compte les premiers critères.

Je remercie à l'avance tous ceux qui voudront bien m'apporter quelques
éléments de réponse, références ou autres liens, en espérant que vous
serez indulgents avec un grand débutant...

--Giz.

3 réponses

Avatar
Antoine Dinimant
Débutant totalement en PHP, je commence actuellement la reconstruction
d'un site en tentant de créer une sorte d'interface "multi-langue". En
(...)

Cependant, je préférerais que la page générée par la suite affiche,
avant cette éventuelle langue par défaut, un message indiquant que la
langue que le visiteur semble utiliser n'est pas encore prise en compte
par l'interface du site, afin de lui donner la possibilité de choisir...


*LE* principe de PHP, c'est qu'il s'exécute *côté serveur* (à l'inverse
de JavaScript, qui est exécuté côté client, càd par le navigateur). Donc
il ne peut pas interrompre la transaction, dire à l'utilisateur "et au
fait, c'est quoi ta langue ?", et reprendre l'exécution.

Pour implémenter ton fonctionnement, je vois deux solutions :

- en pur PHP, si tu reçois pas d'info de langue du navigateur ou de ton
cookie, tu rediriges (fonction header) vers une page spéciale, de
préférence multilingue ;-), avec un formulaire permettant de choisir la
langue. Ce formulaire te renvoie ensuite vers la page d'accueil qui
installe le cookie.

- à peu près la même chose, mais avec du JavaScript sur ta page
d'accueil. Si ce JS ne détecte pas de langue, il ouvre une pop-up avec
le même formulaire de choix de langue. Une fois la langue choisie,
l'info est envoyée dans le cookie, et tu forces la màj de la page
d'accueil. PHP lira alors la langue dans le cookie et donnera la bonne
version de la page d'accueil.

bon courage !

Antoun

Avatar
GizMecano
Bonjour,


*LE* principe de PHP, c'est qu'il s'exécute *côté serveur* (à l'inverse
de JavaScript, qui est exécuté côté client, càd par le navigateur). Donc
il ne peut pas interrompre la transaction, dire à l'utilisateur "et au
fait, c'est quoi ta langue ?", et reprendre l'exécution.


Désolé, mais si j'avais bien compris cette différence fondamentale entre
les deux types de fonctionnement, il n'est pas forcément évident pour un
débutant comme moi de saisir toutes les implications de leurs mises en
place, d'où ma question, certes naïve.

Je te remercie pour ta réponse claire qui me permet de me mettre
concrètement en tête ce qui peut être une exécution 'côté serveur' a
contrario d'une exécution 'côté client'.

Pour implémenter ton fonctionnement, je vois deux solutions :

- en pur PHP, si tu reçois pas d'info de langue du navigateur ou de ton
cookie, tu rediriges (fonction header) vers une page spéciale, de
préférence multilingue ;-), avec un formulaire permettant de choisir la
langue. Ce formulaire te renvoie ensuite vers la page d'accueil qui
installe le cookie.


Comme je préférerais éviter le JavaScript, je vais sans doute tenter la
première solution que tu proposes en pur PHP. Je dois avouer que, même
si je n'ai pas encore bien compris l'utilisation de cette fonction
'header', cette première proposition me paraît la plus cohérente par
rapport à ce que je veux faire.

bon courage !


Merci beaucoup :)

Se lancer dans la découverte du PHP (et incidemment de MySQL), même
quand on connaît assez bien le HTML, est loin d'être forcément gagné
d'avance, paradoxalement à cause du foisonnement des potentialités.

Je suis ravi que des gens expérimentés acceptent de prendre cinq minutes
sur leur temps pour répondre à des néophytes dans mon genre.

Encore merci.

--Giz.

Avatar
Antoine Dinimant
Se lancer dans la découverte du PHP (et incidemment de MySQL), même
quand on connaît assez bien le HTML, est loin d'être forcément gagné
d'avance, paradoxalement à cause du foisonnement des potentialités.


oui, c'est là où on voit bien la différence entre un langage statique
comme HTML (ou SQL) et un langage de programmation... en fait une bonne
maîtrise du HTML t'aide à savoir ce que tu veux obtenir avec PHP (c'est
déjà pas mal ;-)) mais pas du tout sur la façon de le faire ! Là, ça
serait plutôt la connaissance d'autres langages de prog qui aide

Je suis ravi que des gens expérimentés acceptent de prendre cinq minutes
sur leur temps pour répondre à des néophytes dans mon genre.


bah, pour devenir expérimenté, il faut commencer par apprendre, et je
peux t'assurer que j'ai bcp apprécié l'aide du forum durant cette
période exaltante mais parfois douloureuse ;-)