piątek, 1 listopada 2013

Wersje wielojęzyczne stron a baza danych

Częstym wymogiem w projektach jest przygotowanie wersji wielojęzycznej strony. Najczęstszym problemem na jaki można się natknąć jest jak to zrobić wydajnie i do tego bez zmieniania połowy aplikacji przy dodawaniu kolejnego języka?

Do dyspozycji mamy 3 rozwiązania:
  • Każdy język - osobne tabela z rozszerzeniem języka/schematem indywidualnym - ilość tabel w takim rozwiązaniu, często z powtarzającymi się danymi wynosi, jest bardzo duża, a utrzymanie systemu staje się bardziej skomplikowane, gdyż przy każdej zmianie w jednej tabeli (np. dodanie kolumny, założenie indeksów) musimy powtórzyć operację w wielu miejscach.
  • Każdy język - dodatkowa kolumna w tłumaczonej tabeli - rozwiązanie kosztowne w utrzymaniu, gdyż przy każdym dodaniu języka musimy dodać kolumny we wszystkich tabelach, które zawierają tłumaczenia.
  • Główna tabela z wartościami i tabela z tłumaczeniami (stosowane również w wariancie dużo tabel z danymi i jedna globalna z tłumaczeniami). To rozwiązanie najłatwiej utrzymać pod kątem rozszerzania o kolejne języki czy dodatkowe wartości w tabelach.
Bez względu na to, które rozwiązanie wybierzemy niezbędna będzie tabela z listą obsługiwanych języków i ich kodów. Najczęściej korzysta się z 2 znakowych kodów ISO (np. PL, EN, DE) bez rozróżnienia na dialekt (np. angielski amerykański, niemiecki austriacki, francuski kanadyjski itd.). Konieczne jest oznaczenie domyślnego języka. Pozwoli to uniknąć sytuacji, w której przeglądarka wyśle niewspierane kodowania. Ponadto praktyka pokazuje, iż rzadko kiedy 100% tekstów jest przetłumaczona. Z reguły jakaś część pozostaje w oryginale. Do typowej strony internetowej rozwiązanie nr 2 i 3 powinno się dobrze sprawdzić. W przypadku, gdy utrzymujemy rozwiązania regionalne, gdzie zawartość poszczególnych portali utrzymywanych w ramach jednego silnika może się mocno różnić, wartym rozważenia są opcje 1 i 3. Opcję nr. 2 traktowałbym jako bardzo rezerwową, do wykorzystania, gdy potrzebujemy coś stworzyć na szybko i oddać do klienta, a dalej sami nie będziemy tego utrzymywali.

Brak komentarzy:

Prześlij komentarz