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.
Dodaj komentarz
Zezwolono używać:
BBCode
Zabroniono używać:
znaczników HTML
CapaciousCore