Ho messo insieme un piccolo script in PHP che controlla le impostazioni di lingua del browser e li reindirizza ad una versione in lingua del sito (WP multisito),Lingua reindirizzamento funziona sul desktop, ma non il browser del cellulare
function redirect() {
$language = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
switch($language) {
case 'sv':
header('Location: http://www.example.com/sv/');
break;
case 'no':
header('Location: http://www.example.com/no/');
break;
case 'da':
header('Location: http://www.example.com/da/');
break;
default:
header('Location: http://www.example.com/');
break;
}
}
if (strlen($url) < 4) {
session_start();
if (empty($_SESSION[ 'language' ])) {
$_SESSION[ 'language' ] = true;
redirect();
}
}
Durante il test con Mobile Safari o Mobile Chrome il reindirizzamento non sembra funzionare. Esiste un output speciale per la lingua accettata per i browser per dispositivi mobili che devo prendere in considerazione?
Aggiornamento: Dopo un po 'di più di debug ho scoperto questo:
- Safari Mobile visualizza la lingua corretta quando l'eco HTTP_ACCEPT_LANGUAGE ma non reindirizzamento.
- Mobile Chrome (solo iOS, funziona su Android) non visualizza la lingua corretta (il valore predefinito è "en").
- iOS analizza i dati dell'intestazione http in un ordine diverso, confronta iOS Chrome (en-US, en; q = 0.8, sv; q = 0.6) e OSX Chrome (sv, en-US; q = 0.8, en; q = 0,6).
Echo il 'HTTP_ACCEPT_LANGUAGE' dal tuo dispositivo mobile è lì? – chris85
Mi dispiace, ho dimenticato di dirlo - echeggiare questo mi dà "en" come risultato sia per Mobile Safar che per Mobile Chrome (iOS 8). –
Sembra che 'HTTP_ACCEPT_LANGUAGE' non funzioni sui dispositivi mobili. Puoi chiedere all'utente la loro lingua o provare qualche altro metodo quando l'UA è mobile. – chris85