Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pare wersji jezykowych strony
Forum PHP.pl > Forum > Przedszkole
dyzurny
Witam,
czy zna ktos moze jakis tutorial, w ktorym pokazane jest jak ladnie na php zrobic dwie rozne wersje jezykowe strony? Chodzi o to, zeby np po wklepaniu index.php?page=aktualnosci?lang=pl wyskakiwal pliczek po polsku, a przy en po angielsku. Mam strone zrobiona tak, ze boczne menu, stopka i logo do gory laduja sie za kazdym razem z tego samego pliku, a tylko wnetrze strony jest ladowane z katalogu pages, idzie zrobic tak, aby po wybraniu w menu jezyka ladowalo odpowiednio pliki labo z katalogu pages albo z pages_en ?
slash12345
To dosyć proste, poczytaj o konstrukcji switch oficjalnej dokumentacji php.
Masz proste wyrażenie require/include/echo/cokolwiek co wyprowadza dane, a więc:
  1. <?php /* index.php */
  2. switch ($_GET["lang"])
  3. {
  4. case "pl": require "pages/{$_GET["page"]}"; break;
  5. case "en": require "pages_en/{$_GET["page"]}"; break;
  6. default: require "pages/{$_GET["page"]}"; break;
  7. }
  8. ?>

Jeśli chodzi o ładowanie wielu plików, możesz użyć przeszukiwania katalogu przy pomocy readdir. A sprawa wielojęzycznego szablonu strony rozwiązuje się sama gdy dysponujemy odpowiednio skonfigurowanym serwerem Apache (index.html.pl, index.html.en czy cuś takiego).
Gość
Warning: main(./pages/): failed to open stream: No such file or directory in /home/dyzurny/domains/dyzurny.rwi.pl/public_html/index.php on line 23

Fatal error: main(): Failed opening required './pages/' (include_path='.:/usr/local/lib/php') in /home/dyzurny/domains/dyzurny.rwi.pl/public_html/index.php on line 23" title="Zobacz w manualu php" target="_manual

  1. <html><head><title>I Liceum Ogólnokształcące im. Marii Skłodowskiej-Curie w Ostrzeszowie</title><center>
  2. <script language="javascript">
  3.  function onColor(blah)
  4.  {
  5.  blah.style.backgroundColor='#CDCDCD';
  6.  }
  7.  
  8.  function offColor(blah)
  9.  {
  10.  blah.style.backgroundColor='#F0F0F0';
  11.  }
  12.  function displayWindow(url, width, height) {
  13. var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + 
  14. ',left=50,top=50,resizable=1,scrollbars=yes,menubar=no' );
  15.  }
  16. </script>
  17. <!--lang--!>
  18. <?php /* index.php */
  19. switch ($_GET["lang"])
  20. {
  21. case "pl": require "./pages/{$_GET["page"]}"; break;
  22. case "en": require "./pages_en/{$_GET["page"]}"; break;
  23. default: require "./pages/{$_GET["page"]}"; break;
  24. }
  25. ?>
  26. <!--langa koniec ;p--!>
  27. <!--ramka--!>
  28.  
  29. <?php
  30. if (empty($_GET['page']))
  31. {
  32. $sPage = 'glowna';
  33. }
  34. else
  35. {
  36. $sPage = basename($_GET['page']);
  37. }
  38. $sFileName = './pages/' . $sPage . '.php';
  39. if (!file_exists($sFileName))
  40. {
  41. $sFileName = './pages/gowna.php';
  42. }
  43. include ($sFileName);
  44. ?>
  45.  
  46.  
  47. <!--ramki koniec ;p--!>

I o co tu teraz chodzi? gdy wklepie /pages lub caly adres z http wyrzuca mi 403... ?
tommy4
ja ogolnie zrobilem na pare jezykow dostosowanie, tak ze:

1) mam plik languages.txt z charsetem id , czy jezyk jest domyslny, skrot (np. "pl" albo "en") i nazwa bazy danych. ohmy.gif
2) Na poczatku glownego pliku robie sobie piekna tabele, gdzie domyslny jezyk jest na poczatku, wyczytujac dane z powyzszego pliku (domyslny jezyk jest porownywany z tym od przegladarki;d, czyli jesli w powyzszym pliku .txt nie ma jezyka "pl", a w przegladarce jest taki domyslny, to ustawia domyslny z pliku;o)
3) Sprawdzam czy jest ustawione cookie odnosnie jezyka
jesli tak biore jezyk z cookie
jesli nie biore domyslny jezyk
4) laduje baze danych odpowiednia dla jezyka
trza pamietac, ze np. foldery typu avatars musza byc dla kazdego jezyka oddzielne, jesli np. przechowujemy avatar jako $id.".gif";
5) wyswietlam u gory formularz, ktory po submicie ustawia cookie z jezykiem;o
i to wszystko w sumie, mam nadzieje ze cos pomoze.
Gość
  1. <?
  2. $languages = array("pl","de","en");
  3. if(!empty($_GET['lang']) && in_array($_GET['lang'],$languages))
  4. {
  5. $_SESSION['lang'] = $_GET['lang'];
  6. }
  7. elseif(empty($_SESSION['lang']))
  8. {
  9. $_SESSION['lang']="pl";
  10. }
  11. ?>
  12.  
  13.  <?
  14. $menupl = fread(fopen("./pages/menu.php", "r"), filesize("./pages/menu.php"));
  15. echo $menupl;
  16. ?>
  17.  
  18.  
  19. <?php
  20. if (empty($_GET['page']))
  21. {
  22. $sPage = 'glowna';
  23. }
  24. else
  25. {
  26. $sPage = basename($_GET['page']);
  27. }
  28. var_dump($_SESSION);
  29. if($_SESSION['lang']="pl") { $sFileName = './pages/' . $sPage . '.php';
  30. include ($sFileName); }
  31. elseif($_SESSION['lang']="de") { $sFileName = './pages_de/' . $sPage . '.php';
  32. include ($sFileName); }
  33. elseif($_SESSION['lang']="en") { $sFileName = './pages_en/' . $sPage . '.php';
  34. include ($sFileName); }
  35. else { echo 'nima'; }
  36. ?>


I teraz wyrzuca przed includem array(1) { ["lang"]=> string(2) "pl" } lub array(1) { ["lang"]=> string(2) "de" } czy array(1) { ["lang"]=> string(2) "en" } w zaleznosci od &lang=
Coolmax
Też to kiedyś przeżywałem biggrin.gif. Looknij tutaj.
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.