Temat: Portal w kilku językach - jak to zrobić?
Przechodziłem przez problem tworzenia serwisu z wykorzystaniem i18n i l10n. Specyfika problemu obejmuje tlumaczenia statycznego contentu strony jak i rowniez dynamicznych tresci pobieranych z DB. W zaleznosci od wybranego jezyka programowania i dobranego business-case'a mozesz to zrobic na wiele sposob.
-Zalozmy ze robisz to w jakims frameworku PHP: tutaj na pewno wbudowana jest obsluga tlumaczen statycznego kontektu na stronie przez wbudowane funkcje tlumaczace (np. __() w cakephp..) oraz dolaczanie zasobow tlumaczen w plikach.
Jesli chodzi o baze danych to zalezy czy wymagasz od serwisu aby udostepnial na tej samej "podstronie" rozne opisy.. - ktos wchodzi pod link
http://mojastrona.pl/produkt/perfumy/2 i zaleznosci od wybranej flagi udostepni mu sie opis PL/EN/DE - przy takim rozwiazaniu nalezy dodac pola typu desc_pl, desc_en, desc_de
Zaletami tego rozwiazania jest to, ze na jednej stronie mozesz gromadzic wiele roznych wersji jezykowych, natomiast wada moze byc to, dodajac kolejny jezyk musisz praktycznie zmienic wszystkie tabele wcalej bazie danych. Kolejna wada jest pobieranie calego wiersza z bazy (np 5 roznych jezykow) podczas kiedy strone odwiedza osoba poslugujaca sie tylko j. angielskim ...
Mozesz zrobic osobna tabele nazywajac ja i18n_langs i tam przechowywac klucz wlasny tabeli, klucz obcy do encji, nazwe modelu/encji, wybrany jezyk, nazwe pola oraz wartosc pola np:
1, 1, Produkty, PL, opis, "opis ..."
To rozwiazanie daje ci gwrancje dynamicznego dodawania jezykow do bazt oraz pobierania tylko tego co potrzebujesz. Jesli jestes jednak poczatkujacym programista odradzam ten sposob ze wzgledu na zloznosc z jaka mozesz sie spotkac podczas pobierania tabel laczonych + ich tlumaczen ..
Wracjac do konkretnego jezyka, PHP - na pewno tez znajdziesz plik z routingami - mozesz sobie dopisac routingi, w ktorych zawarta bedzie dwuliterkowa nazwa jezyka np strona.pl/pl/costam, storna.pl/en/costam ... Dodajesz konktroler, ktory bedzie sterowal kazda zmiana jezyka i zapisywal aktualnie wybrany jezyk np w sesji albo w ustawieniach zalogowanego usera - jak wolisz ..
Jesli projektujesz cos w Javie, w nowych frameworkach istnieje idea interceptora - tutaj mozesz ladnie zwrappowac logike odpowiedzialna za zmiane jezyka, jesli chodzi o adresy URL to interceptor tez tutaj sie sprawdzi b. dobrze.
Pozdrawiam!
Mariusz Lewandowski edytował(a) ten post dnia 08.09.09 o godzinie 20:51