Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wiele jezyków na stronie i przekazywanie w sesji
Forum PHP.pl > Forum > Przedszkole
Wescik
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
AxZx
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
Wescik
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
AxZx
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)?
Wescik
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
vala
a przekazujesz gdzies identyfikator sesji?
bo ja nie widze.....
AxZx
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']
Wescik
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
AxZx
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. ?>
Wescik
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
AxZx
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
Wescik
Wielkie dzieki działa! guitar.gif
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.