Projektowanie stron WWW od podszewki

Artykuły na każdy temat

[PHP] LangSwitch czyli wielojęzyczne strony + Smarty

Dodano 09.12.2009r. o 23:42
Po krótkiej analizie i paru minutach namysłu zdecydowałem się stworzyć alternatywną wersję skryptu do LangSwitch by jsmp. Powyższe rozwiązanie pokazuję jak stworzyć prostą stronę w kilku językach. Bazując na podpowiedziach z forum pozwoliłem sobie dodać do mojego LangSwitch'a możliwość utrzymywania aktualnego języka w sesji oraz zaimplementowałem bibliotekę szablonów Smarty.

Wymagania

Do poprawnego działania skryptu wymagane jest register_globals ustawione na wartość off oraz chmod 777 dla folderu templates_c.

Charakterystyka i opis działania skryptu

Zacznę od rozłożenia pliku config.php na części pierwsze. W tablicy $cfg['dir'] definiujemy katalogi. Następnie znajdują się dwie stałe, których nie ruszamy. Kolejną zmienną jaka napotkamy na swojej drodze będzie $cfg['system']['default_lang'], która będzie ustalać docelowy język gdy użytkownik wejdzie pierwszy raz na stronę bez zdefiniowanego języka w adresie bądź nie będzie posiadał ciastka z użytym przez niego wcześniej językiem. Następną zmienną na liście jest $cfg['system']['enforce_lang']. Jeżeli wartość jej wynosi true oznacza to, że wymuszamy język docelowy. Przy jakiejkolwiek próbie zmiany języka odniesiemy porażkę. Kolejnym elementem tablicy $cfg jest $cfg['system']['load_lang_array']. To w niej znajdują się wytyczne jakie pliki językowe maja zostać załadowane. W przypadku pobytu np. w panelu administratora łatwo będzie dodać kolejny plik językowy do załadowania. Zawartość tablicy $cfg['system']['available_langs'] mówi nam jakie mamy dostępne języki. Wiedza ta jest opierana na wylistowaniu folderu lang. Chcę poinformować, że tłumaczenia oparłem na translate.google dlatego też może zawierać błędy. Pamiętaj, że jest to tylko przykład! Istotą rzeczy jest zademonstrowanie i nic poza tym. W momencie kiedy Wy będziecie budować stronę wielojęzyczna powinniście oprzeć się na prawidłowym, profesjonalnym tłumaczeniu. W index.php znajduje się operator trójkowy, który decyduję o wyborze prawidłowego charset (angielska obszerniejsza wersja opisu charset). Można go usunąć gdy za podstawę kodowania użyjemy np. UTF-8. Gdy tak się stanie musimy pamiętać, ażeby zapisywać pliki językowe w wybranym przez nas kodowaniu. Naturalnie nasz edytor musi wspierać użyte przez nas kodowanie. Chciałbym zwrócić uwagę na prawidłową metodę budowy tablicy $lang. Najlepszym rozwiązaniem będzie nadawanie kluczy słownych w języku angielskim. Ułatwi to przyszłe tłumaczenia. Odradzam używanie kluczy liczbowych czyli $lang['main'][0] gdyż w momencie dużego rozrostu możemy strącić kontrole nad zawartością. Mam tutaj na myśli np. powtarzanie się wartości. Ta metoda jest bardzo niewygodna ze względu na to, że za każdym razem musimy sprawdzać co dana tablica ma w swojej wartości. Chce wskazać, że tablica $lang została podzielona na segmenty tj. main, menu, struct, title, header, etc. Powyższy zabieg ułatwi utrzymanie jej w przyzwoitym stanie. Pamiętajmy także o uaktualnianiu wszystkich plików językowych gdy dokonujemy zmian.

Zasada tworzenia nowych podstron

W pliku lang_struct.php w danym języku mamy tablice $lang['struct'], która odpowiada za includowanie podstron. Jeżeli chcemy aby po wywołaniu strony z parametrem index.php?page=informacje załadował się plik informations.php z katalogu webs wtedy tworzymy taki wpis:
Kod:
<?php $lang['struct']['informations'] = 'informacje'?>
Naturalnie mechanizm ten można zmienić wedle upodobań.

Kosmetyka

Skrypt nie został poddany kosmetyce. Mam tutaj na myśli np. brak instrukcji warunkowej, która to by usuwała aktualnie używany język z menu wyboru jeżyków. Powyższy zabieg jest rzadko stosowany co nie wyklucza, że nie można go zastosować. Dodatkowo przy niewielkim nakładzie pracy można zmodyfikować skrypt tak ażeby przy zmianie języka automatycznie przenosiło nas na podstrone, która oglądaliśmy w innym języku.

Demo

Demo znajduję się pod tym adresem LangSwitch czyli wielojęzyczne strony. Gotowy przykład do ściągnięcia znajduje się w dziale skrypty pod adresem LangSwitch czyli wielojęzyczne strony.

Komentarze

Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii. W trosce o zachowanie poziomu dyskusji wszystkie komentarze podlegają akceptacji przed ich publikacją dlatego proszę cierpliwie czekać aż komentarz zostanie opublikowany.

CapaciousCore

Dodano 09.11.2012r. o 23:32
Ja tutaj za SEO specjalistę nie zamierzam robić aczkolwiek z tego co wiem to każda subdomena jest traktowana jako osobny serwis więc i "osobne" pozycjonowanie jest potrzebne do niej.

renata

Dodano 09.11.2012r. o 21:31
Nie chcę broń Boże krytykować, ale pod kątem SEO lepiej chyba strony wielojęzyczne umieszczać w osobnych subdomenach. Mam wrażenie że google nie lubi językowych mixów w jednej domenie.

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)