Prośba o pomoc, wersje językowe strony

0

Witam. Mam stronę i chciałbym zrobić kilka wersji językowych. I teraz tak, jak najlepiej to rozwiązać ... , czy to co myślę to dobre rozwiązanie , czy są lepsze. Strona nie jest pisana obiektowo. Opisze mniej wiecej etapy, gdy otwiera sie strona :

  • ustawianie konfiguracji strony jak baza, maile loginy w define("login","jakis login") i wersja jezykowa w define ("PL", array(opisy tekstow po polsku))
  • sprawdzanie w COOKIE jak wyglada zmienna lang, jak brak to nadaje jezyk pl do COOKIE i do SESSION, gy zmieniam jezyk to przez GET , no ale tak obrazowo
  • potem w kazdym miejscu strony wstawiam czesc tablicy odpowiadajacej odpowiedniumu tekstowi

tabela z wersja jezykowa np tak:

id,jezyk,pole,tresc
1,pl,1,strona głowna
2,pl,3,kontakt
3,pl,2,forum

  • i strasznie wolno laduje sie strona nie wiem czemu.

Aha, jeszcze jedno, jak prawidłowo macie rozwiazane pierwsze linijki kodu, co ładujecie, konfiguracje, ustalanie strony kodowej strony, ,jak prawidlowo wlaczyc kompresje na stronie, buforowanie, co ma byc w httacess.

Proszę o pomoc

0

Aha, jeszcze jedno, jak prawidłowo macie rozwiazane pierwsze linijki kodu, co ładujecie, konfiguracje, ustalanie strony kodowej strony, ,jak prawidlowo wlaczyc kompresje na stronie, buforowanie, co ma byc w httacess.

Może być tysiąc różnych opcji, zależy jaki masz styl pisania, co piszesz itd. Nie ma "jednego słusznego" kodu do wszystkiego...

i strasznie wolno laduje sie strona nie wiem czemu.

Google: php profiler/debugger

sprawdzanie w COOKIE jak wyglada zmienna lang, jak brak to nadaje jezyk pl do COOKIE i do SESSION

Nie rób tak!!
Wersje językowe miej w osobnych subdomenach, albo w folderach (nawet wirtualnych przez mod_rewrite), bądź w jakikolwiek sposób rozróżniaj je po adresie URL.
Robiąc opcję z ciastkami/sesją - powodując, że dwie wersje tej samej strony są dostępne spod jednego adresu - spowodujesz, że w Google będziesz miał:

  1. zawsze niepełną treść zaindeksowaną
  2. będzie to treść poprzeplatana we wszystkich językach
  3. ew. będzie to treść tylko w jednym języku
0

No dobrze, rada do pozycjonowania słuszna, przyda sie. A to ze laduje caly tekst z tabeli do tablicy i trzymam to w define(), to dobrze?, czy lepiej na plikach xml,

0

Plik XML i tak będziesz ładował cały do pamięci, więc wszystko jedno (no pomijając jeden dodatkowy dostęp do dysku, bibliotekę do parsowania XML w pamięci, no i czas potrzebny na parsowanie). Wykorzystanie bazy danych może być wskazane, z tym, że ja w moim CMS tłumaczenia ładuję z bazy - ale wszystkie na raz - odpytywanie bazy kilkaset razy nie podobało mi się wydajnościowo. W pamięci nie zajmuje to wiele, ale w takiej bazie tłumaczeń chyba masz pojedyncze zwroty typu "wstecz", "strona główna", "wyślij" itd, a nie całe teksty na poszczególne podstrony?

0

Te teksty z reguły nie są długie, większość to krótkie zwroty. moze jakis news informujący, 2,3 zdania. Moze jak przedstawie na przykladzie, to ta strona.
http://club49s.pl
Czyli to co wymyslilem ze na samym poczatku laduje do zmiennej tablicowej wszystkie opisy to bedzie dobre wyjscie - raz ,czy ta tablice trzymac w define, czy moze w SESSION ?, moze da sie jakos ograniczyc ilosc zaptac o jezyk.
Aha, jak cachowac? macie jakiąś podpowiedź instrukcje ? itp kawałek kodu?

0

Pasowałoby żebyś się zapoznał z bazami danych ;)

Lepsze define niż SESSION (php zapisze wszystkie dane sesji do pliku, a te define i tak ładujesz przy każdym wywołaniu), ale szczerze to define kojarzy mi się z małymi zmiennymi zawierającymi proste, stałe wartości, nie wielką tablicą tłumaczeń. Najlepiej byłoby do tego napisać jakąś klasę, przechowywać te teksty w tablicy i odpowiednią funkcją odwoływać się do odpowiedniego tłumaczenia, ja w CMS mam coś takiego, że wywołuję: ml::t('go_back') i otrzymuję tłumaczenie w aktualnie ustawionym języku (bądź w innym, jeżeli podam drugi parametr), a tablica z tłumaczeniami wygląda mniej więcej tak:

$x = array(
  'go_back'=>array(
    'en'=>"Go back",
    'pl'=>"Powrót"
  ),
  'site_title'=>array(
    'en'=>'Something cool',
    'pl'=>'Coś fajnego'
  )
);

itd.
Funkcja pobierająca tłumaczenie też jest przydatna o tyle, że jak klient uzupełnia sobie potem tłumaczenia i nie uzupełni np. tekstu po francusku, to w tym przypadku zaciągany jest język angielski (o ile jest), potem polski, a jak nawet tego nie ma - to po prostu zwraca np {go_back}.

Aha, jak cachowac? macie jakiąś podpowiedź instrukcje ? itp kawałek kodu?

SOA#16, czyli na nasze - szukaj w Google. Ani nie wiem co chcesz i w jaki sposób cachować (i po co, jeżeli nie ma potrzeby i prowadzisz małą stronkę to tego nie rób, bo pewnie sobie bardziej zaszkodzisz niż pomożesz), a dwa - temat wielokrotnie poruszany w wielu źródłach, oszczędź mój czas i nie każ mi się produkować w temacie na 20 minut, skoro są inne źródła.

0

ok dzieki za wsparcie, cachowac chcialem zapytania w rankingu, jest troche rozbudowane - i dosyc dlugo sie wykonuje. dziwna sprawa, jak robie to z poziomy phpadmina, to trwa szyko a jak przez strone to raz szybko raz wolno, no ale musze przeanalizowac ajaxa i ogolnie kod. w kazdym badz razie dzieki za upewnienie. Zostane przy define.

1 użytkowników online, w tym zalogowanych: 0, gości: 1