Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> funkcja zmiany jezyka na stronie
-matuty-
post 7.01.2016, 21:32:03
Post #1





Goście







Oto Skrypt zmiany jezyka na stronie wraz z wytłumaczeniem, wykonany przezemnie
Func.php
  1. function e($echo){//skrucona funkcja echo
  2. echo($echo);
  3. }
  4.  
  5. function lang()
  6. {
  7.  
  8.  
  9. $lang = @$_GET['lang'];
  10. $tydzien = time()+3600*24*7; //czas ciasteczka -tydzien
  11.  
  12. if($lang == 'en'){ //jeśli w pasku adresu ?lang=en
  13.  
  14. if(!isset($_COOKIE['lang_en'])){ //jeśli nie istnieje ciasteczko jezyka angielskiego
  15. setcookie('lang_en','en',$tydzien); //to je tworzy
  16.  
  17. if(isset($_COOKIE['lang_pl'])){ //jeśli istnieje ciast. Jezyka pl
  18. setcookie('lang_pl','pl',time()- 1); // to je usuwa
  19. }
  20. }
  21.  
  22.  
  23.  
  24. }elseif($lang == 'pl'){ //jeśli w pasku adresu ?lang=pl
  25. if(!isset($_COOKIE['lang_pl'])){ { //jeśli nie istnieje ciasteczko jezyka pl
  26. setcookie('lang_pl','pl',$tydzien);//to je tworzy
  27.  
  28. if(isset($_COOKIE['lang_en'])){//jeśli istnieje ciast. Ang.
  29. setcookie('lang_en','en',time()- 1);//to je usuwa
  30. }
  31. }
  32.  
  33.  
  34.  
  35. }elseif(!isset($_GET['lang'])){//jeśli w pasku nie ma ?lang=
  36. if(!isset($_COOKIE['lang_pl']) AND !isset($_COOKIE['lang_en'])){//i nie ma ciasteczka żadnego jezyka
  37.  
  38. header('location:index.php?lang=pl'); // to ustawia ?lang=
  39. 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(isset($_COOKIE['lang_pl'])){//jeśli istnieje ciasteczko pl
  5. require("../lang/pl.php");//odpala plik z tym jezykiem
  6. }elseif(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>





Go to the top of the page
+Quote Post
kayman
post 8.01.2016, 00:20:48
Post #2





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


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 = array(
  5. 'nazwa'=> 'nazwa użytkownika',
  6. 'haslo' => 'hasło',
  7. 'email' =>'email'
  8. )
  9.  
  10. echo $langVal['nazwa'];
  11.  
  12. // albo define
  13.  
  14. define('LANG_SAVE', 'Zapisz');
  15. define('LANG_ADD', 'Dodaj');
  16. define('LANG_EDIT', 'Edytuj');
  17. define('LANG_UNLOG', 'Wyloguj');
  18.  
  19. 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 = 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 = 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

Ten post edytował kayman 8.01.2016, 00:52:04
Go to the top of the page
+Quote Post
Kshyhoo
post 8.01.2016, 05:43:45
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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


--------------------
Go to the top of the page
+Quote Post
Spirit86
post 8.01.2016, 11:23:24
Post #4





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


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 = array('en', 'pl');
  4. if(!isSet($_COOKIE['lang']) OR (isSet($_GET['lang']) AND $_COOKIE['lang']!=$_COOKIE['lang'])){
  5. setcookie('lang',((isSet($_GET['lang']) AND in_array($_GET['lang'], $allowed) ? $_GET['lang'] : $_GET['lang'][0]), (time()+604800));
  6. }
  7. if(file+exists('../lang/'.$_COOKIE['lang'].'.php')) include_once('../lang/'.$_COOKIE['lang'].'.php');
  8.  


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
dev11
post 18.04.2016, 12:40:06
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 16.08.2014

Ostrzeżenie: (10%)
X----


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

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

Ten post edytował dev11 18.04.2016, 12:41:24
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 Wersja Lo-Fi Aktualny czas: 29.03.2024 - 00:40