Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Algorytmy, klasy, funkcje _ funkcja zmiany jezyka na stronie

Napisany przez: matuty 7.01.2016, 21:32:03

Oto Skrypt zmiany jezyka na stronie wraz z wytłumaczeniem, wykonany przezemnie
Func.php

  1. function e($echo){//skrucona funkcja echo
  2. http://www.php.net/echo($echo);
  3. }
  4.  
  5. function lang()
  6. {
  7.  
  8.  
  9. $lang = @$_GET['lang'];
  10. $tydzien = http://www.php.net/time()+3600*24*7; //czas ciasteczka -tydzien
  11.  
  12. if($lang == 'en'){ //jeśli w pasku adresu ?lang=en
  13.  
  14. if(!http://www.php.net/isset($_COOKIE['lang_en'])){ //jeśli nie istnieje ciasteczko jezyka angielskiego
  15. http://www.php.net/setcookie('lang_en','en',$tydzien); //to je tworzy
  16.  
  17. if(http://www.php.net/isset($_COOKIE['lang_pl'])){ //jeśli istnieje ciast. Jezyka pl
  18. http://www.php.net/setcookie('lang_pl','pl',http://www.php.net/time()- 1); // to je usuwa
  19. }
  20. }
  21.  
  22.  
  23.  
  24. }elseif($lang == 'pl'){ //jeśli w pasku adresu ?lang=pl
  25. if(!http://www.php.net/isset($_COOKIE['lang_pl'])){ { //jeśli nie istnieje ciasteczko jezyka pl
  26. http://www.php.net/setcookie('lang_pl','pl',$tydzien);//to je tworzy
  27.  
  28. if(http://www.php.net/isset($_COOKIE['lang_en'])){//jeśli istnieje ciast. Ang.
  29. http://www.php.net/setcookie('lang_en','en',http://www.php.net/time()- 1);//to je usuwa
  30. }
  31. }
  32.  
  33.  
  34.  
  35. }elseif(!http://www.php.net/isset($_GET['lang'])){//jeśli w pasku nie ma ?lang=
  36. if(!http://www.php.net/isset($_COOKIE['lang_pl']) AND !http://www.php.net/isset($_COOKIE['lang_en'])){//i nie ma ciasteczka żadnego jezyka
  37.  
  38. http://www.php.net/header('location:index.php?lang=pl'); // to ustawia ?lang=
  39. http://www.php.net/setcookie('lang_pl','pl',$tydzien);// i tworzy ciasteczko jezyka pol
  40.  
  41. }
  42. }
  43.  
  44.  
  45.  
  46. }


Lang.php
  1. <?
  2. require('func.php');
  3. lang();//wywołanie funkcji
  4. if(http://www.php.net/isset($_COOKIE['lang_pl'])){//jeśli istnieje ciasteczko pl
  5. require("../lang/pl.php");//odpala plik z tym jezykiem
  6. }elseif(http://www.php.net/isset($_COOKIE['lang_en'])){
  7. require
  8. ("..lang/en.php");[php]

}

?>
[/php]

Przykładowe użycie:
Pl.php
  1. $nazwa = 'nazwa użytkownika';
  2. $haslo = 'hasło';
  3. $email = 'email';
  4. $zarejestuj = 'zarejestruj';

En.php
  1. $nazwa = 'user name';
  2. $haslo = 'password';
  3. $email = 'email';
  4. $zarejestruj = 'register';


Login.php
  1. require('lang.php');
  2. <a href="?lang=pl">pol</a>
  3. <a href="?lang=en">eng</a>
  4. <form action="" method="POST">
  5. <center>
  6. <table><tr><td>
  7. <center><?e($nazwa);?></center></br><input type="text" name="login">
  8. </td></tr>
  9. <tr><td>
  10. <center><?e($haslo);?></center></br><input type="password" name="haslo">
  11. </td></tr>
  12. </table>
  13. </center>
  14. <center>
  15. <input type="submit" value="<?e($zaloguj);?>" name="admin">
  16. </center>
  17. </form>
  18. <a href="reg.php"><?e($zarejestruj);?></a>






Napisany przez: kayman 8.01.2016, 00:20:48

pliki lang ze zmiennymi

  1. $nazwa = 'nazwa użytkownika',
  2. $haslo = 'hasło';
  3. $email = 'email;
  4. $zarejestuj = 'zarejestruj';


nie bo przy 300 wartościach nie wymyślisz zmiennych/trudno będzie się połapać, dla przykładu można tak

  1.  
  2. //tablica
  3.  
  4. $langVal = http://www.php.net/array(
  5. 'nazwa'=> 'nazwa użytkownika',
  6. 'haslo' => 'hasło',
  7. 'email' =>'email'
  8. )
  9.  
  10. http://www.php.net/echo $langVal['nazwa'];
  11.  
  12. // albo define
  13.  
  14. http://www.php.net/define('LANG_SAVE', 'Zapisz');
  15. http://www.php.net/define('LANG_ADD', 'Dodaj');
  16. http://www.php.net/define('LANG_EDIT', 'Edytuj');
  17. http://www.php.net/define('LANG_UNLOG', 'Wyloguj');
  18.  
  19. http://www.php.net/echo LANG_SAVE;
  20.  


questionmark.gif? -> po co cookies tworzone na podstawie url? jak jest ?lang=pl to wiadomo jaki lang, pod tym url zawsze będzie pl

  1.  
  2. $lang = @$_GET['lang']; // questionmark.gif @ bo błąd wywala nie? :)
  3.  
  4. //a tak nie będzie
  5.  
  6. $lang = http://www.php.net/isset($_GET['lang']) ? $_GET['lang'] : null;
  7.  
  8. if($lang) {
  9.  
  10. //dalsze czynności
  11.  
  12. }
  13.  
  14. //a jeszcze lepiej
  15.  
  16. $lang = http://www.php.net/isset($_GET['lang']) ? $_GET['lang'] : 'pl'; // jak nie ma w url dajemy domyślny tu -> pl
  17.  


funkcja e($echo) questionmark.gif? biggrin.gif chyba tylko po to żeby się pomylić smile.gif

Napisany przez: Kshyhoo 8.01.2016, 05:43:45

I te tabelki i ten center... smile.gif

Napisany przez: Spirit86 8.01.2016, 11:23:24

1. Zacznij naukę od języka polskiego
2. Nie zaśmiecaj tego działu takim shitem, takie coś dla działu dla początkujących
3. Całe Twoje wypociny można zawrzeć w kilku linijkach...
4. Przypisywanie zmiennej do każdego stringa do tłumaczenia jest masochizmem i jest nieoptymalne.

  1. <?
  2.  
  3. $allowed = http://www.php.net/array('en', 'pl');
  4. if(!http://www.php.net/isset($_COOKIE['lang']) OR (http://www.php.net/isset($_GET['lang']) AND $_COOKIE['lang']!=$_COOKIE['lang'])){
  5. http://www.php.net/setcookie('lang',((http://www.php.net/isset($_GET['lang']) AND http://www.php.net/in_array($_GET['lang'], $allowed) ? $_GET['lang'] : $_GET['lang'][0]), (http://www.php.net/time()+604800));
  6. }
  7. if(http://www.php.net/file+exists('../lang/'.$_COOKIE['lang'].'.php')) include_once('../lang/'.$_COOKIE['lang'].'.php');
  8.  

Napisany przez: dev11 18.04.2016, 12:40:06

Kod
$_COOKIE['lang']!=$_COOKIE['lang']

no to może zakończymy tą błazenadę........
wyzywasz ludzi że piszą shit, a sam nie jesteś lepszy.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)