Jako, że przyjęliśmy Europę w poczet krajów słowiańskich, coraz większą popularnością cieszą się witryny wielojęzyczne. Wiąże się z tym kilka problemów, które dobrze jest rozwiązać już na etapie planowania i projektowania, gdyż późniejsze radzenie sobie z nimi rodzi coraz więcej kłopotów.

Pierwsza sprawa to domyślna wersja językowa - wielu ludzi zastanawia się, czy stronę domyślnie wyświetlać po polsku, gdyż większość odbiorców operuje tym właśnie językiem, czy może po angielsku, by obcokrajowcy nie uciekli na widok krzaczków i szlaczków. Odpowiedź jest prosta - należy skorzystać z mechanizmów negocjacji zawartości dostarczanych przez sam protokół HTTP. Przeglądarka wraz z żądaniem wysłania dokumentu podaje również listę języków i stopień ich preferowania (parametr q, podawany w skali od 0 do 1). Różne przeglądarki zachowują się różnie - niektóre nie podają listy preferencji wcale, inne nie definiują stopnia preferowania danego języka lub jego odmiany (bo en jest czym innym niż en-US, o czym za chwilę). Standard mówi, że jeśli nie jest używana skala preferencji, to obowiązująca jest kolejność, w jakiej języki zostały podane - od najważniejszego, do najmniej ważnego. Podobnie jest, jeśli kilka języków posiada taki sam współczynnik q.

Przed wybraniem wersji językowej należy więc przesortować języki według ich zadeklarowanego stopnia preferowania (nie jest określona kolejność, w jakiej przeglądarki wysyłają listę języków, więc te o najniższym współczynniku preferencji mogą pojawić się równie dobrze na początku, w środku, jak i na końcu listy). Następnie iterując po elementach listy należy sprawdzić, czy nasz serwis oferuje daną wersję i - jeśli tak, wysłać ją do przeglądarki i przerwać dalsze testy. Specjalna uwaga dotyczy języków o q równym 0 - zerowy współczynnik q oznacza, że internauta pod żadnym pozorem nie życzy sobie oglądać stron w danym języku. Druga uwaga jest na temat odmian języka - jeśli agent wysłał sam identyfikator języka, bez podtypu, to jako pasującą uznaje się każdą odmianę danego języka (na przykład en pasuje tak do en-us, jak do en-gb, jeśli akurat te dwie odmiany oferujemy) - zasada ta nie ma zastosowania w drugą stronę, jeśli internauta domaga się konkretnej odmiany języka, to jako pasującą uznaje się tylko tę jedną konkretną.

Co jeśli żadna z oferowanych przez nas wersji nie pasuje do listy wysłanej w nagłówkach przez agenta? Powinniśmy wybrać ten język, którego będzie używać największa grupa naszych odwiedzających. Oczywiście, dla niektórych (na przykład tych z nieprawidłowo skonfigurowanymi przeglądarkami) będzie to błędny wybór, jednak tutaj znajduje zastosowanie inny mechanizm - przełączanie języków w locie.

Z przełączaniem w locie (za pomocą linków na stronie) wiąże się najwięcej problemów. Oczywiście metoda ta musi mieć pierwszeństwo przed negocjacją języka (wyobraźmy sobie Polaka, który ogląda nasz serwis za pośrednictwem komputera w niemieckiej kafejce i jego frustrację, kiedy okazuje się, że sklep, który ma pod domem, uparcie uszczęśliwia go stroną w języku obcym). Najpopularniejszą metodą jest zastosowanie ciasteczek i zapisywanie w nich tłumaczenia, jak jednak zmienić wersję językową? Część rynku zaskarbiły sobie szkaradne ikonki z flagami państw, choć same tworzą więcej problemów niż rozwiązują.

Ikona flagi z definicji przywiązana jest do konkretnego kraju (lub regionu, jak nadużywana powszechnie ikona Zjednoczonego Królestwa, mylnie nazywana flagą Anglii). Problem polega na tym, że języki do krajów przywiązane nie są, stąd frustracja sporej części mieszkańców Kanady, którzy nawykli już do klikania ikonki symbolizującej małe państwo żabojadów, o którym słyszeli kiedyś, że leży na drugim końcu świata. Nie wszystkie kraje darzą się sympatią, a konieczność klikania flagi sąsiada kłóci się u niektórych z odczuciami patriotycznymi. Dlatego właśnie najlepszym rozwiązaniem jest użycie linków tekstowych. Co na nich napisać? Nazwę danego języka w danym języku (chyba, że cieszy cię wizja odwiedzenia strony międzynarodowej korporacji z siedzibą w RPA i poszukiwanie angielskiej wersji pośród dwudziestu linków na oko wyglądających jak jedno z afrykańskich narzeczy. Jedno jest pewne, każdy zna nazwę własnego języka, choć nie każdy musi znać jej wszystkie tłumaczenia.

Kolejna rzecz to sam mechanizm przełączania wersji - popularna metoda polega na zapisaniu ciasteczka i przerzuceniu agenta na tę samą stronę, która w zależności od zawartości ciasteczka wyświetli się w jednym bądź drugim języku. O ile metoda ta działa dla żywych odwiedzających, o tyle nie sprawdza się w przypadku robotów i wyszukiwarek. Nieraz już zdarzało nam się poprawiać serwisy, których klienci skarżyli się, że Google zaindeksował trzy czwarte podstron po arabsku. Najlepiej, gdyby każdy dokument posiadał unikalny URI - to zapewni pełne indeksowanie zawartości dla każdego z języków i zaowocuje znacznie lepszą pozycją w wynikach wyszukiwania.

Oprócz problemów czysto technicznych, istnieje jeszcze cała masa problemów logicznych. Są to między innymi:

  • format wyświetlania dat (zależy to od kraju i niezależnie od wybranego formatu, część ludzi będzie się zastanawiać, czy chodzi o pierwszego lutego, czy drugiego stycznia)
  • sposób podawania godzin (konieczne jest wybranie i podanie strefy czasowej)
  • dostosowanie formularzy (na zachodzie modne jest pytanie o tytuł, z jakim należy się do klienta zwracać - niestety, tytuły takie nie funkcjonują we wszystkich kręgach kultorowych, a tam gdzie działają, ich liczba jest różna; amerykanie często popełniają błąd prosząc o zipcode w angielskiej wersji serwisów, podczas gdy reszta świata używa kodów pocztowych)

Problemy te jednak znacznie odbiegają od głównej treści notki, więc jeśli będę o nich pisał szerzej, to zdecydowanie przy innej okazji.