Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wybór języka, bez automatycznego wracania do domyślnego języka, gdy jest ustawiony drugi język
Tonic
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.10.2007

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował Tonic 17.03.2008, 15:15:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
xbigos
post
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 27
Dołączył: 13.07.2005
Skąd: Jarocin

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
Tonic
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.10.2007

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
KCG
post
Post #4





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


a może cookies?


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Tonic
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.10.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Tonic 20.03.2008, 00:01:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:04