Ustalisliym juz, ze system powinien obslugiwac kilka wersji jezykowych. Komunikaty jezykowe proponuje przechowywac w tablicy asocjacyjnej w katalogach:
lang/pl/lang.php
lang/en/lang.php
Plik lang.php powinien przechowywac tablice asocjacyjna z komunikatami jezykowymi. W przypadku duzej ilosci danych, komunikaty mozna rozbic na kilka plikow:
lang/pl/lang.php -- plik glowny
lang/pl/users.php -- komunikaty zwiazane z obsluga uzytkownika
lang/pl/view.php -- komunikaty zwiazane z wyswietlaniem hasla
Taki podzial mozna jednak ustanowic pozniej, jak zobaczymy jak duza bedzie tablica z komunikatami.
- Uzytkownik powinien moc wybrac jezyk nie bedac zalogowany
- Dane dotyczace jezyka powinny byc ustawiane w profilu
Jezeli chodzi o punkt 2. to sprawa jest prosta - ustawienia jezyka znajduja sie w bazie danych.
Jezeli chodzi o punkt 1. to najlepszym rozwiazaniem bedzie wysylanie na komputer usera, ciasteczka - np. o nazwie "rr_lang" ktore zawierac bedzie informacje o jezyku.
Teraz pozostaje tylko w odpowiednim mejscu programu, dolaczyc plik jezykowy lang.php dzieki czemu tablica $lang bedzie dostepna dla pozostalych plikow. Mysle, ze odpowiednim do tego miejscem, bedzie plik session.php, gdzie nastepuje odczyt ciastek i sprawdzenie, czy user jest zalogowany. I wtedy:
- Sprawdzamy, czy dostepne jest ciacho "rr_lang". Jezeli tak - przechodzimy do punktu 2.; jezeli nie - idziemy do punktu 3.
- Jezeli ciacho jest dostepne - wczytujemy odpowiedni plik lang.php, przechodzimy do punktu 3.
- Sprawdzamy czy dostepne jest ciacho "rr_data", ktore zawiera informacje o zalogowanym uzytkowniku. Jezeli tak - przechodzimy do punktu 4.; jezeli nie - uznajemy, ze domyslnym jezykiem jest polski i wczytujemy plik lang.php.
- Na podstawie informacji zawartych w ciasteczku, z bazy danych odczytujemy informacje na temat uzytkownika i ustawienia jego jezyka. Na tej podstawie wczytujemy odpowiedni plik lang.php.
Z tego wzgledu tablica $lang nie bedzie dostepna na nizszych szczeglach aplikacji - np. w klasie DB. Jezeli w klasie DB wystapi blad - np. logowania to proponuje wyswietlic komuniakt w jezyku angielskim, nie korzystajac z tablicy $lang.
Jakies uwagi?