Wykrywanie języka w JavaScript

No Comments

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”.

Categories: JavaScript, Zabawy z kodem Tags: Tagi:

Leave a Reply

Your email address will not be published. Required fields are marked *