Wykrywanie języka w JavaScript
czerwiec 24th, 2009. Brak komentarzy.
Kategorie: JavaScript, Zabawy z kodem.
Witam po długiej przerwie. Dziś będzie ultrakrótko.
W naszej firmie kultywujemy staropolską tradycję rozdawania klientom prezentacji i katalogu produktów w formie strony (no, w sumie wielu stron w sensie plików) WWW, nagranej na CD. Jest to bardzo wygodne, gdyż pozwala na łatwe i szybkie uaktualnianie i nie wymaga instalowania dodatkowych narzędzi.
Nasz katalog na CD zawiera kilka wersji językowych. Domyślnie odpalany jest język polski, z możliwością zmiany w dowolnym momencie. Ale co zrobić, żeby nie drażnić niepolskojęzycznych klientów? Wykryć język przeglądarki na starcie.
Rozwiązanie jest proste jak świński ogon. I – wyjątkowo – nie użyję tu jQuery – bo nie ma potrzeby.
Najpierw należy obsłużyć zdarzenie onLoad elementu BODY. Chyba wiemy jak, prawda?
<body onLoad="redirect()">
Powyżej zaś, wewnątrz HEAD, pomiędzy SCRIPTami umieszczamy naszą funkcję:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function redirect() { var lang; if(typeof navigator.browserLanguage != "undefined") lang = navigator.browserLanguage.substr(0,2); if(typeof navigator.language != "undefined") lang = navigator.language.substr(0, 2); // w tym przykładzie obsługujemy języki PL, EN, DE, RU // języki spoza listy traktujemy jako EN if(lang != 'pl' && lang != 'de' && lang != 'ru') lang = 'en'; // przekierowanie: this.location.href = lang + '/index.htm'; } |
Testowane na: Firefox 3.0, IE7, Google Chrome, Opera, Safari.
Gwoli wyjaśnienia, skąd substr() przy własności language (bo o tym, że browserLanguage jest dla Przeglądarki-Która-Zawsze-Musi-Mieć-Jedną-Nóżkę-Bardziej, nie muszę chyba wspominać)? Safari, jako jedyna “spoza IE” podaje język w formie “xx-XX”.