Aider une tanche en PHP

WRInaute accro
Je ne connais rien de rien en php, ça va s'améliorer mais pour l'instant...

Je cherche à faire pour mon site une page index.php, qui détecte les langues préférées du navigateur.
Le site est en quatre langue fr, de, en, es
J'avais trouvé (mais j'ai perdu le lien) un code qui récupérait toutes les valeurs des langues préférées (avec les variantes régionales), et testait en boucle

1. Si la première préférence est une des quatre langues du site, aller à la page correspondante (url absolue sous la forme /lgxx/default.htl)
2. Sinon tester la deuxième langue préférée...
3. Si aucune langue trouvée, afficher la page en anglais (url /lgen/default.htm)

Bon déjà je ne retrouve pas ce code, uniquement des codes qui semblent reprendre la première langue préférée (mais comme je comprends pas tout...)

Deuxio j'ai essayé ce que j'ai trouvé, y compris sur WRI, et ça ne marche pas, ça ne me donne "rien" ou des erreurs sur la page.

Alors voilà, si quelqu'un avait la gentillesse de me dépanner, et de me donner très exactement le code que je dois mettre dans mon fichier index.php, du <? de démarrage au ?> final, il aura droit à ma reconnaissance infinie, matérialisée sous forme d'un traitement de faveur si jamais il (ou elle) vient au Maroc :) (j'ai aussi l'allemagne en stock, mais j'ai remarqué que ça intéressait beaucoup moins les gens)
 
WRInaute impliqué
Pour les langues du navigateur, c'est un en-tête qu'envoit (ou pas !) le visiteur, rien de bien précis:
Code:
$_SERVER['HTTP_ACCEPT_LANGUAGE']
.

Le mieux reste le traçage via l'IP, sauf pour AOL.

@++
 
WRInaute accro
FloBaoti a dit:
Pour les langues du navigateur, c'est un en-tête qu'envoit (ou pas !) le visiteur, rien de bien précis:
Code:
$_SERVER['HTTP_ACCEPT_LANGUAGE']
.

Le mieux reste le traçage via l'IP, sauf pour AOL.

@++

Merci mais

1. c'est pas le code complet me goures-je ?
2. Le traçage par l'IP ne tient absolument pas compte des préférences de l'internaute. Et moi ça me gonfle quand à cause de mon IP on m'envoie des pages en allemand aors que je souhaite des pages en français :)
 
WRInaute impliqué
Ben le code tu en fais ce que tu veux, $_SERVER['HTTP_ACCEPT_LANGUAGE'] contient l'en-tête "Accept-Language" envoyé par le visiteur à ton serveur.

Après tu peux voir la première langue mise en préférence ainsi par exemple:
Code:
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], ','));

(en supposant que cet en-tête comporte la langue comme ça:
(chez moi c'est ça en tout cas)
 
WRInaute discret
FloBaoti a dit:
Pour les langues du navigateur...

Le mieux reste le traçage via l'IP, sauf pour AOL.

@++


Je vais paraitre vieux jeu mais le mieux à mon sens est que l'utilisateur choisisse lui même son langage.

Une arrivée sur une page avec la langue locale peut géner des internautes n'étant pas de la nationalité de leur pays de résidence. Donc laisser la liberté a l'internaute de choisir sa langue peut être un plus.
Et enregistrer le choix de l'utilisateur et lui ressortir à la prochaine visite c'est encore mieux.

Et puis bon dans un programme il ne faut pas de "sauf"... Un programme qui fonctionne dans 100% des cas sauf pour 20% des utilisateurs doit être corrigé car il y a des bugs ou des problèmes de conception, je ne critique personne vous l'aurez compris.
 
WRInaute impliqué
Je parlais de méthodes automatiques pour ma part, forcément il ne peut rien avoir de mieux que l'utilisateur choisisse, mais de manière automatique, il n'y a rien qui fonctionne dans 100% des cas.
Puis avoir sur chaque site une page de sélection de langue, je ne trouve pas ça top perso. Je préfère arriver sur une langue, peu importe la langue, et trouver des drapeaux facilement sur la page pour changer de langue.

P.S:C'est ma faute si AOL refile des IP enregistrés aux Etats-Unis à des abonnés Français ? :roll: Et ils ne doivent pas être les seuls ...
 
WRInaute discret
Non bien sur pas de page d'accueil avec de gros drapeaux pour choisir la langue... Un accueil en Anglais par defaut "Langue mondiale..." et après des petits drapeaux pour choisir sa propre langue
 
WRInaute accro
C'est marrant comme tout le monde m'explique que ce que je veux faire n'est pas censé être la bonne solution, alors que je demande juste comment le faire....

:D

Je vous recommande donc la lecture de l'article de WRI sur le sujet plus un certain nombre de sujets équivalents.

En gros, soit on a une page tunnel pour l'entrée avec le choix de la langue -> pas bon
Soit on a une page qui choisit une langue a priori -> 1. risque de duplicate content avec la page d'index dans la langue en question en fonction de la structure du site, et pas bon pour les ceusses qui ne parlent pas cette langue
Soit on a une page avec les 4 langues, voir éventuellement les 6 pour certains sites que je fais. Lourd, et pas engageant pour les langues qui sont en bas.
Soit on décide de proposer par défaut une page dans une langue qui semble être celle de l'internaute, et on lui laisse la possibilité avec les petits drapeaux d'aller ailleurs.
Mieux.

Après la question est de savoir comment on détecte la langue préférée du visiteur. Moi je pense que la langue préférée du navigateur, quand elle est disponible, est le meilleur choix. C'est ma décision, je la maintiens, je demande juste comment faire le code php.
 
WRInaute accro
Marie-Aude a dit:
C'est marrant comme tout le monde m'explique que ce que je veux faire n'est pas censé être la bonne solution, alors que je demande juste comment le faire....
c'est ce qui t'a été donné
FloBaoti a dit:
Pour les langues du navigateur, c'est un en-tête qu'envoit (ou pas !) le visiteur, rien de bien précis:
Code:
$_SERVER['HTTP_ACCEPT_LANGUAGE']
.
 
WRInaute accro
Leonick a dit:
c'est ce qui t'a été donné
FloBaoti a dit:
Pour les langues du navigateur, c'est un en-tête qu'envoit (ou pas !) le visiteur, rien de bien précis:
Code:
$_SERVER['HTTP_ACCEPT_LANGUAGE']
.

Non, ça c'est la fonction à utiliser à l'intérieur de la boucle.
Mais si je fais un fichier que j'appelle index.php et que je charge avec seulement cette ligne là, même une tanche comme moi peut se douter que ça ne marche pas.

Donc dans les dossiers de WRI il y a ça
https://www.webrankinfo.com/analyses/aut ... ingues.php

j'ai donc fait une page -http://www.***-*uarz*zate.com//test2.html pour tester, ça ne marche pas, ça ne me renvoie nulle part (page passée au validateur de code).

J'ai trouvé aussi des codes php mais manifestement ils sont prévus pour fonctionner avec Spip, et ça ne marche pas pour renvoyer sur une page html normale -http://www.i *fs*ip-0uarzazate.com/index.php

Voilou :)
 
WRInaute accro
Tiens, ça, tu peux tester il marche directement
Code:
<?php
$langue=explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
switch ($langue[0]){
case "fr" :
  echo "france";
  exit;
case "en" :
  echo "english";
  exit;
default:
  echo "langue inconnue";
}
;
?>
après, il suffit de remplacer le echo par un include(french.php);

et ça y est, ta page sera adaptée au langage renvoyé par le navigateur
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut