![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pewien problem. Otóz potrzebuję skryptu opierajacego się na zmiennych globalnych, do wyboru języka. Tłumaczenia słów mam w plikach php "polski.php", "angielski.php" itd. Język ma być inkludowany na początku strony - i to oczywiscie działa. Jak ustale "angielski.php"/"polski.php" - działa jak należy. Problem w tym że nie wiem jak zmieniać to, jaki plik ma być inkludowany. Rzecz jasna wiem że da się to zrobić na zmiennych globalnych, ale próbuję już od pewnego czasu i mi nie wychodzi. Chcę żeby link był pod postacią obrazka. Mógłby ktoś mi podpowiedzieć co zrobić w takiej sytuacji? (IMG:style_emoticons/default/tongue.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
jak dobrze rozumiem to chcesz coś na kształt i18n tak ?
przykładowy plik językowy to
przykład użycia |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ajć, niezupełnie. Chciałem to zrobić w nieco łatwiejszy sposób.
Pliki z tłumaczeniami działają - trzeba je tylko zainkludować zależnie od.. Np. klikam obrazek "PL", a kliknięcie nadaje zmiennej globalnej "jezyk" wartość "pl". I teraz warunek, : jeśli zmienna globalna ma wartość "pl" to "include(polski.php)". No i analogicznie z obrazkiem "ANG"... Tylko właśnie mi to nie działa.. To jest kawałek kodu (troszke inny niż opisuje):
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
O ile dobrze patrzę, to masz literówkę. W if zgubiłeś "a" czyli nie "jezyk/polski.php" a "jezyki/polski.php"
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Poradziłem sobie. Użyłem oddzielnie formularza do każdego przycisku, i ukrytego pola input z wartością (przeznaczoną dla zmiennej globalnej).
Odświeżam... Mam mały problem... Dotyczy on nie do końca samego wyboru jezyka, ale w moim przypadku owszem. Otóż mam wybór jezyka, a jego "formularz" (skrypt zmiany zmiennej odpowiadającej za język) jest umieszczony w "szablon.php", który dodawany jest zawsze na końcu strony. Na innych stronach jest inkludowany plik zależnie od owej zmiennej. Problem polega na tym, że gdy zmienię język, prawidłowo zmienia się on od razu, ale tylko w treści "szablon.php", zaś na wszystkich innych trzeba drugi raz kliknąć na jakiś odnośnik na stronie, albo ogólnie ją odświeżyć, aby język został zmieniony. Przykład tego jest tutaj (tylko tutaj, gdyż na innych podstronach nie ma jeszcze innego języka) - przełączać tylko między polskim a angielskim (brak innych języków). Ma ktoś jakiś pomysł, jak "podwójnie" odświerzyć strone po wyborze języka? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 8 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Może po prostu na początku strony dodaj
Ja osobiście bym tak zrobił, ale to już tylko moja propozycja. Bo to bez sensu odświeżać stronę dwa razy :/ A jeśli chodzi o kod do wyboru języka to zrobiłbym to tak: Gdzie id to styl buttona z .css Ten post edytował ZeTu 17.01.2013, 19:53:51 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
No mam podobnie...
W "szablon.php" mam coś takiego: - sprawdzanie czy zmienna "jezyk" jest pusta - jesli jest, domyslnie zmienia jej wartość na "pl"; - jeżeli tak nie jest to: jeżeli z formularza została wysłana wartość "jezyk" - to zmien wartość zmiennej na tą przesłaną z formularza; - inkluduj plik zależnie od zmiennej "jezyk"; Na innych stronach, np. właśnie "logowanie.php" jest tylko ten ostani punkt, czyli: "inkluduj plik zależnie od zmiennej "jezyk" " Na samym końcu "logowanie.php" jest dodawany "szablon.php". |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 8 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Musisz treść szablon.php umiescic na samym poczatku w logowanie.php, bo przez to, że masz na dole szablon.php, to musisz odświeżyć stronę żeby był efekt, a jak dasz na początku zawartość includowaną z szablon.php, to zadziała.
Ten post edytował ZeTu 17.01.2013, 14:05:04 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
No pewnie by zadziałało, ale jak dam "szablon.php" na początku, to nie wyświetli mi się nic w "logowanie.php".
W "logowanie.php" mam zmienne (napisy, formularze, ogólna treś podstrony) które następnie są umieszczane w "szablon.php". Jakiś inny pomysł? Może jest taka możliwość, aby po kliknięciu na język nastąpiły 2 przeładowania strony? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 8 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Może po prostu podaj kod całej strony i będzie łatwiej coś doradzić, niż "na ślepo".
A jeśli nie chcesz podać kodu, to wyśli mi go na email, a ja sprawdzę. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Obetne kod tylko do istotnch fragmentów. No to tak...
Wpierw "szablon.php";
No i "logowanie.php":
No i przykładowo "polski.php":
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 8 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zobacz zrobiłem takie coś http://takie-sobie.zoba.eu/demo/2/ i w poprzednim kodzie co napisałem zrobiłem kilka błędów, bo pomyliłem się trochę, a tutaj kod:
I teraz zamiast echo '...'; dajesz include(); np. if(); to pozostawiasz a zamiast echo ''; dajesz:
Możesz dodać do tego cookies, żeby osoba wchodząca drugi raz miała stronę w wybranym wcześniej języku Ten post edytował ZeTu 17.01.2013, 20:01:06 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 1 Dołączył: 16.12.2012 Ostrzeżenie: (0%) ![]() ![]() |
Patrząc na kod, wydaje mi się że i tak jest to to samo, co napisałem ja.
Zmieniając język, w szablonie strony "szablon.php", język zmienia się tak jak powienien (tak jak Tobie) - po jednym kliknięciu. Ale co jeśli Twój kod będzie inkludowany na dole podstrony? No właśnie.. to samo. Cóż.. Trochę głupio, bo rozwiązanie było banalne. Tylko na "szablon.php" jest postawiony warunek, że gdy jest wysłana nowa wartość "jezyk" to zmienia się inkludowany plik, a na reszcie było tylko inkludowanie. Cóż, należało zrobić to analogicznie jak w "szablon.php". Czyli po prostu skopiować te 3 linikji (IMG:style_emoticons/default/biggrin.gif) Wszystko działa... No a jak w takim razie zrobić zapamiętywanie do ciasteczek? Ten post edytował Mephis 17.01.2013, 21:00:40 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 8 Dołączył: 8.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
http://php.net/manual/en/function.setcookie.php
Po kliknięciu na dany button wywołujesz funkcję która dodaje cookes do przeglądarki, po ponownym wejściu na stronę sprawdza, czy masz w przeglądarce cookies z tej strony, jeśli tak pobiera je i wyświetla odpowiedni plik języka, jeśli nie masz zapisanego cookes, daje język domyślny. Patrząc na kod, wydaje mi się że i tak jest to to samo, co napisałem ja. No właśnie nie skoro ty potrzebujesz odświeżyć stronę by było widać efekt.
Ten post edytował ZeTu 17.01.2013, 21:28:44 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 12:26 |