Dans les sites Web multilingues, une bonne expérience utilisateur nécessite généralement que vous soyez automatiquement passé à la page de langue correspondante en fonction de la langue du navigateur du visiteur ou du langage préféré. PHP fournit des moyens flexibles pour y parvenir, le plus couramment utilisé est de mettre en œuvre la redirection via l'en-tête ("Emplacement: ...") .
Les étapes d'implémentation et le code d'exemple seront décrits ci-dessous.
La plupart des navigateurs apporteront l'en-tête d' accept-langage dans les demandes HTTP, que PHP peut être obtenu via $ _server ['http_accept_language'] . Par exemple:
$userLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Ce code élimine les deux premières lettres du code linguistique, telles que En (anglais), ZH (chinois) et FR (français).
Ensuite, vous devez décider à quelle page sauter en fonction du code de langue que vous obtenez. Par exemple:
switch ($userLang) {
case 'zh':
$redirectUrl = 'https://m66.net/zh/';
break;
case 'fr':
$redirectUrl = 'https://m66.net/fr/';
break;
case 'en':
default:
$redirectUrl = 'https://m66.net/en/';
break;
}
Ici, nous avons rendu un simple jugement de branche. S'il s'agit d'un utilisateur chinois qui saute sur / zh / , l'utilisateur français qui va à / fr / , et que d'autres utilisateurs (par défaut) sautent vers la page anglaise.
Dans la dernière étape, utilisez la fonction d'en-tête () de PHP pour envoyer une réponse de saut. Notez que l'appel en-tête () doit être avant la sortie de la page, sinon une erreur sera signalée.
header("Location: $redirectUrl");
exit;
Ajouter la sortie; Pour s'assurer que le script arrête l'exécution immédiatement après avoir envoyé un saut.
<?php
// Obtenez la langue du navigateur
$userLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// Sauter selon la langue
switch ($userLang) {
case 'zh':
$redirectUrl = 'https://m66.net/zh/';
break;
case 'fr':
$redirectUrl = 'https://m66.net/fr/';
break;
case 'en':
default:
$redirectUrl = 'https://m66.net/en/';
break;
}
// En-tête de saut
header("Location: $redirectUrl");
exit;
?>
En-tête () doit être appelé avant toute sortie HTML ou écho , sinon elle provoquera des en-têtes déjà envoyées par des erreurs.
Détecter plus de langues : si votre site Web prend en charge plus de langues, vous pouvez étendre le commutateur ou utiliser la cartographie du tableau.
Ajouter des options de commutation linguistique : Bien que le saut automatique puisse améliorer l'expérience, il est recommandé que les utilisateurs puissent également changer manuellement les langages pour éviter les erreurs de sélection automatique.