2009-05-13 16 views
0

Zunächst einmal bin ich ein PM und das Entwickler-Team ist schon sauer auf mich. Daher möchte ich einen kurzen Überblick über die Lösung der folgenden Frage geben.Sichtbarkeit von div Tags basierend auf Browser-Sprache umschalten

Wir haben eine HTML-Seite für den statischen Wartungsmodus, die in 24 Sprachen "Bitte überprüfen Sie bald" anzeigt. Im Moment zeigen wir alle 24 Übersetzungen gleichzeitig an und die Seite ist ziemlich hässlich.

<div id="en"> 
    <p>Please check back soon</p> 
</div> 
<div id="es"> 
    <p>Compruebe por favor más adelante</p> 
</div> 
... 

Ich bin auf der Suche verwenden Javascript, um die Browser-Sprache und setzte Sichtbarkeit zu erkennen:

Ich habe jede Übersetzung in seinem eigenen div-Tag wie folgt gewickelt sichtbar; für das div, das der Browsersprache entspricht. Und setze alle anderen div Tags auf visibility: hidden;

Auf der Suche nach Hilfe bei der Erkennung von Browser-Sprache und das Entfernen von Gebietsschema (falls vorhanden), so habe ich einen 2-stelligen Wert für die Verwendung in einem komplexen Schalter.

+0

Die navigator.language/userLanguage Attribute geben die installierte Browser-Sprache, nicht die vom Benutzer bevorzugte Sprache (zumindest in FFX). Idealerweise wollte ich die bevorzugte Sprache des Benutzers, denke aber, dass ich mit der installierten Sprache leben kann. Danke für die Hilfe! – Slomojamma

Antwort

5

Meine Lösung wäre, den Accept-Language-Header in der HTTP-Anfrage zu verwenden, um die bevorzugte Sprache des Benutzers zu finden und dann einfach ein Div in der richtigen Sprache zurückzugeben. Auf diese Weise müssen Sie sich keine Gedanken darüber machen, divs zu verstecken. Wenn Sie divs ausblenden, werden sie alle zuerst angezeigt und dann erst nach der Ausführung von Javascript auf Versteckt gesetzt, damit die Benutzererfahrung nicht so gut ist.

Bitte sehen: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

2

Zunächst scheint dies eine serverseitige Lösung zu sein, anstatt eine Client-Side-Lösung. Allerdings hat eine schnelle Suche diese Schnipsel wieder auftauchen:

var userLang = (navigator.language) ? navigator.language : navigator.userLanguage; 
alert ("The language is: " + userLang); 

auf this page.

Also, wenn Sie es wirklich auf dem Client tun müssen, dann könnte dies helfen.

+0

Danke, denn manchmal kann man einfach keinen Code auf dem Server haben, wie wenn man eine "Maintenance" -Seite anzeigt oder so. – ixe013

2

Zunächst einmal sollten Sie nicht in ein Div umbrechen, Sie sollten nur das Attribut direkt auf das Tag setzen. Zweitens, wenn Sie in HTML sind, können Sie das Attribut lang verwenden, und wenn Sie in XHTML sind, können Sie das Attribut xml: lang verwenden ... das ist viel aussagekräftiger als "id". Schließlich ist es wahrscheinlich am besten, die Verarbeitung Server-Seite zu tun, wenn Sie können, mit Accept-Sprache

Verwandte Themen