Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wybór języka, bez automatycznego wracania do domyślnego języka, gdy jest ustawiony drugi język
Forum PHP.pl > Forum > Przedszkole
Tonic
Najpierw powiem, jak jest zbudowana strona. Mam plik index.php, który korzysta z switch do przełączania między pl.php a eng.php. Domyślnie jest polski język. Obie strony zawierają swoje podstrony, które są po prostu kopiami z przetłumaczoną treścią. Są one ulokowane w katalogach /pages i /pages/eng. Korzystam także z .htaccess do uzyskiwania krótszych adresów. Problemem jest to, że jak włączę język angielski, to pojawia się strona startowa w tym języku i to jest poprawne. Ale gdy kliknę na którąś z pozycji menu, to ładuje się strona startowa w języku polskim, reszta witryny tak samo - jakbym ustawiał na język polski.

Kody:

index.php

  1. <?php
  2.    
  3.    switch ($_GET['id']) 
  4.    { 
  5.    case ("pl"): 
  6.    include ("pl.php"); 
  7.    break; 
  8.   
  9.    case ("eng"): 
  10.    include ("eng.php"); 
  11.    break; 
  12.   
  13.     default: 
  14.    include ("pl.php"); 
  15.    } 
  16.  
  17. ?>




CODE


RewriteEngine On
Options +FollowSymlinks
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/pages/elektronika/$1.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/wn/$1.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/kriogenika/$1.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/$1.php -f [OR]

RewriteCond %{DOCUMENT_ROOT}/pages/eng/electronic/$2.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/eng/hv/$1.php -f [OR]
RewriteCond %{DOCUMENT_ROOT}/pages/eng/cryogenic/$1.php -f [OR]
 ewriteCond %{DOCUMENT_ROOT}/pages/eng/$1.php -f

RewriteRule ^([a-z0-9-]+)$ /index.php?id=$1 [NC]



Język przełączam za pomocą odnośników z href="pl" i href="eng".

Zmiana języka działała dobrze, dopóki nie dodałem .htacess, więc podejrzewam go jako winowajcę.
xbigos
moze to nie jest rozwiazanie twojego problemu. Ale ja kożystam z sesji. Ustawiam sobie sesje z nazwa języka a dla zarejestrowanego usera wrzucam info o jezyku w bazie. I huczy aż miło:) Może spróbujesz tak jak ja Ci mówie
Tonic
Cytat(xbigos @ 17.03.2008, 15:42:46 ) *
moze to nie jest rozwiazanie twojego problemu. Ale ja kożystam z sesji. Ustawiam sobie sesje z nazwa języka a dla zarejestrowanego usera wrzucam info o jezyku w bazie. I huczy aż miło:) Może spróbujesz tak jak ja Ci mówie


Musiałbym się dużo podszkolić w sesjach - PHP  to dla mnie czarna magia, niestety. Dziękuję, ale mnie to  na obecną chwilę przerasta.


Dalej kombinuję i szukam odpowiedzi w internecie, ale bez żadnego rezultatu. Jednak zauważyłem coś dziwnego - jeśli dam regułkę :

Kod
RewriteRule ^angielski/([a-z0-9-]+)$ /eng.php?id=$1 [L,NC]


Według niej wpisany adres zawierający słowo 'angielski' i nazwę podstrony o dowolnym układzie liter i cyfr oraz myślników będąca jednocześnie zmienną, zostanie przekonwertowany na adres, według którego serwer ma załadować odpowiednią stronę.

Jeśli wpiszę pełny adres (czyli eng.php?id=nazwa_podstrony), działa dobrze. Natomiast, jak wpiszę skrócony, to strona ładuje się, ale bez CSS - mam wrażenie, że serwer myśli, że plik pl.php z podaną ścieżką do CSS jest w podkatalogu 'angielski'. Pytanie - dlaczego ręczne wpisanie ładuje stronę z CSS, a przekonwertowany adres nie? Pomimo tego, że z reguły wynika, że adresy są takie same? (angielski/nazwa_podstrony => eng.php/?id=nazwa_podstrony)
KCG
a może cookies?
Tonic
Cytat(KCG @ 19.03.2008, 23:48:45 ) *
a może cookies?


Jeśli znasz tutorial dla PHP'owych ignorantów, który opisuje jak wykorzystać ciasteczka do zapamiętywania języka strony i poprawnie działające z mod_rewrite oraz odnośnikami w postaci "nazwa_podstrony" (ta nazwa jest konwertowana przez skrypt do ładowania podstrony, kod tutaj), to jak najbardziej :-)

EDIT: Jednak mi się wydaje, że wystarczy rozwiązać problem z mod_rewrite opisany post wcześniej - chciałbym, żeby rozwiązanie mojego problemu z dwujęzycznością było proste - bo naprawdę jestem zielony w PHP.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.