verschiedensprachige Sendebestätigungseiten
<script>
Der
Formmailer von
Onlex.de erfreut sich mittlerweile internationaler Beliebtheit. Wir haben mittlerweile verschiedene Nutzer rund um den Globus: Aus Spanien, Brasilien, den Niederlanden, verschiedenen osteuropäische Ländern und sogar aus Asien erhalten wir hin und wieder Support Anfragen.
Eine Frage war, ob man bei Nutzung einer mehrsprachigen Website auch verschiedensprachige Sendbestätigungsseiten nutzen kann.
Eine einfache Abhilfe wäre, wenn man mehrere Sendebestätigungstexte in verschiedenen Sprachen auf eine Seite setzen würde. Je nach Grösse des Zielpublikums müsste der Nutzer jedoch weit scrollen um "seine" Sprache wiederzufinden ;-)
Abhilfe schafft hier ein kleines JavaScript, welches die Sprache der Benutzerführung im Browser abfragt.
Dieses JavaScript muss auf der Seite eingebunden werden, die in den Einstellungen für den
Formmailer von
Onlex.de angegeben wurde.
Quelltext-Auszug:
<script type="text/javascript">
if (navigator.language.indexOf("en") > -1) {
window.location.href = 'en.html';
}
</script>
Mit dem Objekt
navigator
besteht die Möglichkeit Eigenschaften des verwendeten Browsers abzufragen.
Für unsere Zwecke möchten wir nun die Sprache der Benutzerführung des Browsers abfragen:
navigator.language
. Mit
indexOf
wird in den folgenden Klammern nach einem Ausdruck in einer Zeichenkette gesucht. In diesem Fall
"en"
.
Der nachfolgende Ausdruck
> -1
hat eine etwas verwirrliche Bedeutung: Der Ausdruck kommt mehr (
>
) als gar nicht (
-1
) vor.
Die Sprache wird mit dem internationalen Kürzel angegeben: "en" für Englisch, "de" für Deutsch, "fr" für Französisch, ...
Eine komplette Liste der Sprachkürzel kann man in der SelfHTML finden:
Übersicht zu Sprachenkürzeln nach ISO 639-1.
Selbstverständlich können auch auf verschiedene anderssprachige Seiten weitergeleitet werden:
<script type="text/javascript">
if (navigator.language.indexOf("en") > -1) {
window.location.href = 'en.html';
} else if (navigator.language.indexOf("fr") > -1) {
window.location.href = 'fr.html';
}
</script>
Die erste Abfrage lautet: Wenn die die Sprache / das Sprachkürzel der Benutzerführung des Browsers (
navigator.language
) "en" beinhaltet (
indexOf("en") > -1
), dann öffne die Seite
en.html
(
window.location.href = 'en.html';
).
Sonst (
else
): Wenn die die Sprache / das Sprachkürzel der Benutzerführung des Browsers (
navigator.language
) "fr" beinhaltet (
indexOf("fr") > -1
), dann öffne die Seite
fr.html
(
window.location.href = 'fr.html';
).
Dieser Code kann beliebig weiter ausgebaut werden.
Jetzt klang alles ja sehr einfach. Der Code wird von allen aktuellen Browsern mit
einer Ausnahme unterstützt: Der Internet Explorer von Microsoft.
Im Internet Explorer heisst die Eigenschaft
navigator.browserLanguage
.
Hieraus ergibt sich dann die Herausforderung: Man muss prüfen, ob die entsprechende Seite im Internet Explorer geöffnet ist und dann danach die entsprechende Seite öffnen.
Dies kann über eine weitere Eigenschaft des
navigator
Objekts herausgefunden werden:
navigator.appName
.
Quelltext-Auszug:
<script type="text/javascript">
if (navigator.appName == "Microsoft Internet Explorer" && navigator.browserLanguage.indexOf("en") > -1) {
window.location.href = 'en.html';
}
if (navigator.language.indexOf("en") > -1) {
window.location.href = 'en.html';
}
</script>
Im obigen Beispiel werden zweierlei Dinge abgefragt:
Da der Internet Explorer die Eigenschaft
navigator.language
nicht interpretieren kann, wird eine erste Abfrage mit den Eigenschaften
navigator.appName
und
navigator.browserLanguage
erstellt.
Wenn der Wert aus
navigator.appName
"Microsoft Internet Explorer" entspricht
und (
&&
) die zweite Abfrage nach der Sprache der Benutzerführung des Browsers (
navigator.browserLanguage
) das entsprechende Länderkürzel enthält, dann wird die entsprechende Seite geöffnet.
Als zweites erfolgt die Abfrage der Sprache der Benutzerführung des Browsers auf ein entsprechendes Sprachkürzel, was von allen anderen Browsern korrekt interpretiert wird.
Wichtig ist, dass die Abfrage zum Internet Explorer zu Beginn gemacht wird, da sonst das Skript mit einer Fehlermeldung seitens des Internet Explorers abgebrochen wird, da dieser
navigator.language
nicht interpretieren kann.
Selbstverständlich lässt sich der obige Code beliegig erweitern:
Quelltext-Auszug:
<script type="text/javascript">
if (navigator.appName == "Microsoft Internet Explorer" && navigator.browserLanguage.indexOf("en") > -1) {
window.location.href = 'en.html';
} else if (navigator.appName == "Microsoft Internet Explorer" && navigator.browserLanguage.indexOf("fr") > -1) {
window.location.href = 'fr.html';
}
if (navigator.language.indexOf("en") > -1) {
window.location.href = 'en.html';
} else if (navigator.language.indexOf("fr") > -1) {
window.location.href = 'fr.html';
}
</script>
Überprüfen kann man sein Skript einfach mit einem Addon für Firefox und SeaMonkey:
Prefbar von Manuel Reimer.
↑
zum Seitenanfang ↑