Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wiele jezyków na stronie i przekazywanie w sesji
Wescik
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


Witam!
Chciałem zrobić wielojęzykową stronę tzn. polski, angielski, niemieski i rosyjski.
I chciałem to zrobić za pomocą tablicy(tłumaczenia) w plikach i sesji, która bedzie pamiętała wybrany język. Chodzi o to, że nie wiem dlaczego nie chce przekazać sesji na inny plik w moim przypadku testowym to jest index2.php.

Mam takie pliki:
index.php index2.php
  1. <?php
  2.  
  3.  
  4. if ($_GET['language'] == 'pl') {
  5. $_SESSION['language'] = 'pl';
  6. include (&#092;"./lang/pl.php\");
  7. }else if ($_GET['language'] == 'en') {
  8. $_SESSION['language'] = 'en';
  9. include (&#092;"./lang/en.php\");
  10. }else if ($_GET['language'] == 'de') {
  11. $_SESSION['language'] = 'de';
  12. include (&#092;"./lang/de.php\");
  13. }else if ($_GET['language'] == 'ru') {
  14. $_SESSION['language'] = 'ru';
  15. include (&#092;"./lang/ru.php\");
  16. }else {
  17. $_SESSION['language'] = 'pl';
  18. include (&#092;"./lang/pl.php\");
  19.  
  20. }
  21.  
  22. echo 'To jest nazwa sesji:<b> '.$_SESSION['language'].'</b> <br />';
  23. echo 'Tu jakiś tekst:<b>  '.$lang['omnie'].' - '.$lang['galeria'].' - '.$lang['pobierz'].'</b><br />';
  24.  
  25. echo '<a href=\"./index2.php\">NEXT >></a> <br />'; //tu jakos powinno przenies sesje na drugi plik?
  26.  
  27. echo 'Zmiana jezyka: <br />
  28. <a href=\"./index.php?language=pl\">polski</a><br />
  29. <a href=\"./index.php?language=de\">niemiecki</a><br />
  30. <a href=\"./index.php?language=en\">angielski</a><br />
  31. <a href=\"./index.php?language=ru\">ruski</a><br />';
  32. ?>

oraz pliki z jezykami pl.php, de.php, en.pl oraz ru.php
i one wyglaaja tak:
[php]
<?php
$lang['omnie']='O mnie';
$lang['galeria']='Galeria';
$lang['pobierz']='Pobierz';
?>

No i moj problem polega na tym, ze startuje odpowiednia sesja, ale nie jest przekazywana do nastepnego pliku sad.gif. Proszę o pomoc
ewentualnie moze to mozna jakoś ładniej zrobić?

Pozdrawiam

Ten post edytował Wescik 21.07.2005, 14:46:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


ja to zrobilem tak:

  1. <?php
  2.  
  3. if(isset($_SESSION['jezyk'])){
  4.  $jezyk = $_SESSION['jezyk'];
  5. }else{
  6.  $jezyk = 'pl';
  7. }
  8. include($jezyk.'/'.$jezyk.php);
  9.  
  10.  
  11. ?>


a wczesniej oczywiscie wrzucic to trzeba do sesji:)
w kazdym pliku zrob cos takiego i juz

Ten post edytował AxZx 21.07.2005, 13:50:18


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Wescik
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


Sorki ni jak mi to nie działa sesja sie zaczyna ale nie przekazuje sad.gif. Cos gdzies zle robie. Może mi wylistowac jakieś dwa pliki, które beda miedzy sobą przesyłać sesje wersji jezyka i ją ładować ? bo mi w jednym pliku wszystko sie tłumaczy ale jak klikne na link przejscia do innej strony to niestety nie zapamietuje jezyka:(
Dzięki
Pozdrawiam
Go to the top of the page
+Quote Post
AxZx
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


ale sesje sa trzymany w plikach, albo w bazie gdzies tam na serwerze
wiec obojetne w ktorym pliku u ciebie one powinny sie wyswietlac

moze nie dales session_start() w drugim pliku (na samej gorze)?


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Wescik
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


Zrobiłem to tak:

pliki index.php i index2.php:

  1. <?php
  2.  
  3.  
  4. if(isset($_SESSION['jezyk'])){
  5.  $jezyk = $_SESSION['jezyk'];
  6. }else{
  7.  $jezyk = 'pl';
  8. }
  9. include(&#092;"./$jezyk.php\");
  10.  
  11. // Wykorzystanie
  12.  
  13. //sprawdzanie czy sesja jest przekazywana dalej
  14. echo '<a href=\"./index2.php\">NEXT</a> <br />';
  15.  
  16. //powinno pokazac sesje , jezli zmienie na $jezyk to mi wyswietla calyczas 'pl'
  17. echo 'To jest nazwa sesji:<b> '.$_SESSION['jezyk'].'</b> <br />';
  18. //tu powinny byc teksty w zaleznosci od jezyka
  19. echo 'Tu jakiś tekst<b> '.$lang['tekst1'].' - '.$lang['tekst2'].' - '.$lang['tekst3'].'</b><br />';
  20.  
  21. //zmiana jezyka
  22. echo 'Zmiana jezyka: <br /> 
  23. <a href=\"./index.php?jezyk=pl\">polski</a><br />
  24. <a href=\"./index.php?jezyk=de\">niemiecki</a><br />
  25. <a href=\"./index.php?jezyk=en\">angielski</a><br />
  26. <a href=\"./index.php?jezyk=ru\">rosyjski</a><br />';
  27.  
  28. ?>

I nic nie dziala. łąduje odrazu jezyk polski (tak w sumie powinno byc). Nie wazne ktory wybiore jezyk i tak ładowany jest polski ale sesja i tak nie jest trzymana sad.gif.
Sprawdzałem w katalgogu sesje i plik danej sesji jest pusty? czyli wogole sesja nie dziala?. W moim poprzednim sposobie jednak zapisywał wartosc zmiennej ale jej nie przekazywał dalej ? Nie wiem o co chodzi.


PLZ HELP

Ten post edytował Wescik 22.07.2005, 08:26:28
Go to the top of the page
+Quote Post
vala
post
Post #6





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 12.01.2005

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


a przekazujesz gdzies identyfikator sesji?
bo ja nie widze.....


--------------------
Warsztat: Easy PHP 1.7:Apache 1.3.27|PHP 4.3.3|PHPMYADMIn 2.5.3|MYSQL 4.0.15
Go to the top of the page
+Quote Post
AxZx
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


a gdzie masz przypisanie do zmiennej sesyjnej jezyk ?
bo jezeli to jest caly kod no to nie ma tam tego.
musisz gdzies dopisac

$_SESSION['jezyk'] = 'pl';

albo inny w zaleznosci od $_GET['jezyk']


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Wescik
post
Post #8





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


Dziaął ale nie do końca mianowicie sesja z index.php jest przesyłana do index2.php ale jak wezme spowrotem przejscie do index.php to gubi sesje i ładuje 'pl'.

index.php:

  1. <?php
  2.  
  3. if ($_GET['jezyk'] == 'pl') {
  4. $_SESSION['jezyk'] = 'pl';
  5. }else if ($_GET['jezyk'] == 'en') {
  6. $_SESSION['jezyk'] = 'en';
  7.  
  8. }else if ($_GET['jezyk'] == 'de') {
  9. $_SESSION['jezyk'] = 'de';
  10. }else if ($_GET['jezyk'] == 'ru') {
  11. $_SESSION['jezyk'] = 'ru';
  12. }else {
  13. $_SESSION['jezyk'] = 'pl';
  14. }
  15.  
  16. if(isset($_SESSION['jezyk'])){
  17.  $jezyk = $_SESSION['jezyk'];
  18. }else{
  19.  $jezyk = 'pl';
  20. }
  21. include(&#092;"./$jezyk.php\");
  22.  
  23. // Wykorzystanie
  24.  
  25. //sprawdzanie czy sesja jest przekazywana dalej
  26. echo '<a href=\"./index2.php\">NEXT</a> <br />'; 
  27.  
  28. //powinno pokazac sesje
  29. echo 'To jest nazwa sesji:<b> '.$_SESSION['jezyk'].'</b> <br />';
  30. //tu powinny byc teksty
  31. echo 'Tu jakiś tekst<b> '.$lang['tekst1'].' - '.$lang['tekst2'].' - '.$lang['tekst3'].'</b><br />';
  32.  
  33. //zmiana jezyka
  34. echo 'Zmiana jezyka: <br /> 
  35. <a href=\"./index.php?jezyk=pl\">polski</a><br />
  36. <a href=\"./index.php?jezyk=de\">niemiecki</a><br />
  37. <a href=\"./index.php?jezyk=en\">angielski</a><br />
  38. <a href=\"./index.php?jezyk=ru\">rrosyjski</a><br />';
  39.  
  40. ?>


Natomiast w pliku index2.php mam tak:
  1. <?php
  2.  
  3.  
  4. if(isset($_SESSION['jezyk'])){
  5.  $jezyk = $_SESSION['jezyk'];
  6. }else{
  7.  $jezyk = 'pl';
  8. }
  9. include(&#092;"./$jezyk.php\");
  10.  
  11. // Wykorzystanie
  12.  
  13. //sprawdzanie czy sesja jest przekazywana dalej
  14. echo '<a href=\"./index.php\">BACK</a> <br />'; 
  15.  
  16.  
  17.  
  18. //powinno pokazac sesje
  19. echo 'To jest nazwa sesji:<b>'.$_SESSION['jezyk'].'</b> <br />';
  20. //tu powinny byc teksty
  21. echo 'Tu jakiś tekst<b> '.$lang['tekst1'].' - '.$lang['tekst2'].' - '.$lang['tekst3'].'</b><br />';
  22.  
  23. //zmiana jezyka
  24. echo 'Zmiana jezyka: <br /> 
  25. <a href=\"./index2.php?jezyk=pl\">polski</a><br />
  26. <a href=\"./index2.php?jezyk=de\">niemiecki</a><br />
  27. <a href=\"./index2.php?jezyk=en\">angielski</a><br />
  28. <a href=\"./index2.php?jezyk=ru\">rosyjski</a><br />';
  29.  
  30. ?>

Chciałem zeby z kazdego pliku mozna było zmieniać jezyk i dodałem pierwsza cześć kodu z index.php $_GET ale wtedy wogole sesja nie przechodzi?
Nie mam pojecia jak to ma wogole działać
Założenie było takie zeby wybierajac jezyk mozna bylo latać po wszystkich podstronach i przegladac je w wybranym jezyku?

W plikach tej postac to index.php rozpoczyna sesje i wrzuca zmienna jezyka, a index2.php ja przejmuje, ale gdy nacisne 'back' to wraca do index.php i ładuje domyslny "pl"? a jak dodam GETy do index2.php to wogole nie jest przesyłana sesja w żadną strone? smile.gif

Proszę o cierpliwość, dopiero sie ucze i robię jakieś głupie błędy.
Możesz mi to jakoś poprawić/naprawić?
Pozdrawiam
Go to the top of the page
+Quote Post
AxZx
post
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


index.php
  1. <?php
  2.  
  3. switch(@$_GET['jezyk']){
  4. case&#092;"pl\":
  5. $_SESSION['jezyk'] = 'pl';
  6. break;
  7. case&#092;"en\":
  8. $_SESSION['jezyk'] = 'en';
  9. break;
  10. case&#092;"de\":
  11. $_SESSION['jezyk'] = 'de';
  12. break;
  13. case&#092;"ru\":
  14. $_SESSION['jezyk'] = 'ru';
  15. break;
  16. default:
  17. $_SESSION['jezyk'] = 'pl';
  18. break;
  19. }
  20.  
  21. if(isset($_SESSION['jezyk'])){
  22.  $jezyk = $_SESSION['jezyk'];
  23. }else{
  24.  $jezyk = 'pl';
  25. }
  26. echo '<h3>'.$jezyk.'</h3>';
  27.  
  28. // Wykorzystanie
  29.  
  30. //sprawdzanie czy sesja jest przekazywana dalej
  31. echo '<a href=\"./index2.php\">NEXT</a> <br />';
  32.  
  33. //powinno pokazac sesje
  34. echo 'To jest nazwa sesji:<b> '.$_SESSION['jezyk'].'</b> <br />';
  35. //tu powinny byc teksty
  36.  
  37.  
  38. //zmiana jezyka
  39. echo 'Zmiana jezyka: <br />
  40. <a href=\"./index.php?jezyk=pl\">polski</a><br />
  41. <a href=\"./index.php?jezyk=de\">niemiecki</a><br />
  42. <a href=\"./index.php?jezyk=en\">angielski</a><br />
  43. <a href=\"./index.php?jezyk=ru\">rrosyjski</a><br />';
  44.  
  45. ?>


index2.php
  1. <?php
  2.  
  3. switch(@$_GET['jezyk']){
  4. case&#092;"pl\":
  5. $_SESSION['jezyk'] = 'pl';
  6. break;
  7. case&#092;"en\":
  8. $_SESSION['jezyk'] = 'en';
  9. break;
  10. case&#092;"de\":
  11. $_SESSION['jezyk'] = 'de';
  12. break;
  13. case&#092;"ru\":
  14. $_SESSION['jezyk'] = 'ru';
  15. break;
  16. default:
  17. $_SESSION['jezyk'] = 'pl';
  18. break;
  19. }
  20.  
  21. if(isset($_SESSION['jezyk'])){
  22.  $jezyk = $_SESSION['jezyk'];
  23. }else{
  24.  $jezyk = 'pl';
  25. }
  26. echo '<h3>'.$jezyk.'</h3>';
  27.  
  28. // Wykorzystanie
  29.  
  30. //sprawdzanie czy sesja jest przekazywana dalej
  31. echo '<a href=\"./index.php\">BACK</a> <br />';
  32.  
  33.  
  34.  
  35. //powinno pokazac sesje
  36. echo 'To jest nazwa sesji:<b>'.$_SESSION['jezyk'].'</b> <br />';
  37. //tu powinny byc teksty
  38.  
  39. //zmiana jezyka
  40. echo 'Zmiana jezyka: <br />
  41. <a href=\"./index2.php?jezyk=pl\">polski</a><br />
  42. <a href=\"./index2.php?jezyk=de\">niemiecki</a><br />
  43. <a href=\"./index2.php?jezyk=en\">angielski</a><br />
  44. <a href=\"./index2.php?jezyk=ru\">rosyjski</a><br />';
  45.  
  46. ?>


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Wescik
post
Post #10





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


OK tym razem nic nie mieszałem tylko przekopiowałem twoj kod i niestety, ale sesja nie jest przekazywana dalej sad.gif. U Ciebie to działa tzn. przekazje sesje w jedna i druga strone? U mnie po przeskoczeniu do drugiej stronki ładuje default czyli 'pl'.

A jeszcze jedno co powoduje dodanie @ przd zmienną $_GET?
@$_GET

Ten post edytował Wescik 22.07.2005, 11:53:59
Go to the top of the page
+Quote Post
AxZx
post
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


uups pomylilem sie

wywal default ze switcha
bo default zrobi ze jak nie ma $_GET to wlasnie wstawia do sesji jezyk wartosc pl
wiec wywal default i bedzie dobrze

@ powoduje to ze nie wywala bledu jezeli $_GET nie jest ustawiony


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Wescik
post
Post #12





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 23.03.2004
Skąd: Mrągowo

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


Wielkie dzieki działa! guitar.gif
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: 20.08.2025 - 05:00