Il modo corretto è guardare la HTTP Accept-Language intestazione inviata al server. Questo contiene l'elenco ordinato e ponderato delle lingue che l'utente ha configurato per preferire il proprio browser.
Purtroppo questa intestazione non è disponibile per la lettura all'interno di JavaScript; tutto ciò che ottieni è navigator.language
, che ti dice quale versione localizzata del browser web è stata installata. Non si tratta necessariamente della stessa lingua preferita dell'utente. Su IE invece ottieni systemLanguage
(lingua del sistema operativo installato), browserLanguage
(uguale a language
) e userLanguage
(regione del sistema operativo configurata dall'utente), che sono tutti ugualmente inutili.
Se dovessi scegliere tra quelle proprietà, annuserei per userLanguage
primo, tornando indietro language
e solo dopo (se quelli non corrispondevano a nessuna lingua disponibile) guardando browserLanguage
e infine systemLanguage
.
Se riesci a mettere uno script sul lato server da qualche altra parte in rete che legge semplicemente l'intestazione Accept-Language e lo sputa indietro come file JavaScript con il valore dell'intestazione nella stringa, ad es .:
var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';
quindi è possibile includere un <script src> che punta a quel servizio esterno nell'HTML e utilizzare JavaScript per analizzare l'intestazione della lingua. Non conosco alcun codice di libreria esistente per fare questo, tuttavia, poiché l'analisi Accept-Language viene quasi sempre eseguita sul lato server.
Qualunque cosa tu finisca di fare, avrai sicuramente bisogno di un override dell'utente perché per alcune persone indovinerà sempre qualcosa di sbagliato. Spesso è più semplice inserire l'impostazione della lingua nell'URL (ad es. Http: //www.example.com/en/site vs http: //www.example.com/de/site) e lasciare che l'utente faccia clic collegamenti tra i due. A volte si desidera un singolo URL per entrambe le versioni linguistiche, nel qual caso è necessario memorizzare l'impostazione nei cookie, ma ciò può confondere i programmi utente senza supporto per cookie e motori di ricerca.