Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wybór języka, Zmienne globalne
Mephis
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

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


Witam.

Mam pewien problem.
Otóz potrzebuję skryptu opierajacego się na zmiennych globalnych, do wyboru języka.
Tłumaczenia słów mam w plikach php "polski.php", "angielski.php" itd.

Język ma być inkludowany na początku strony - i to oczywiscie działa. Jak ustale "angielski.php"/"polski.php" - działa jak należy.
Problem w tym że nie wiem jak zmieniać to, jaki plik ma być inkludowany.
Rzecz jasna wiem że da się to zrobić na zmiennych globalnych, ale próbuję już od pewnego czasu i mi nie wychodzi.
Chcę żeby link był pod postacią obrazka.

Mógłby ktoś mi podpowiedzieć co zrobić w takiej sytuacji? (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


jak dobrze rozumiem to chcesz coś na kształt i18n tak ?
  1. class i18n extends helper
  2. {
  3. protected static $_cache = array();
  4. protected static $_lang = 'pl';
  5. public static function setLang($lang)
  6. {
  7. self::$_lang = $lang;
  8. if(!isset(self::$_cache[$lang]))
  9. {
  10. self::$_cache[$lang] = array();
  11. }
  12. }
  13.  
  14. public static function getLang()
  15. {
  16. return self::$_lang;
  17. }
  18.  
  19. protected static function load($lang)
  20. {
  21. return include 'ścieżka_do_i18n/' . $lang . '.php';
  22. }
  23.  
  24. public static function translate($text,array $var=array(), $lang = null)
  25. {
  26. if($lang !== null && $lang != self::$_lang)
  27. {
  28. if(!isset(self::$_cache[$lang]))
  29. {
  30. self::$_cache[$lang] = array();
  31. self::$_cache[$lang] = self::load($lang);
  32. }
  33. }
  34. else
  35. {
  36. $lang = self::$_lang;
  37. if(count(self::$_cache[$lang])==0)
  38. {
  39. self::$_cache[$lang] = self::load($lang);
  40. }
  41. }
  42. $text = self::$_cache[$lang][$text];
  43.  
  44. return empty($var) ? $text : strtr($text, $var);
  45. }
  46.  
  47. public static function _($text,array $var=array(), $lang = null)
  48. {
  49. return self::translate($text,$var, $lang);
  50. }
  51.  
  52.  
  53. }

przykładowy plik językowy to
  1. <?php
  2.  
  3. return array(
  4. 'test'=>'test_pl',
  5. 'test :id'=>'test_pl :id'
  6.  
  7. );

przykład użycia
  1. echo i18n::_('test :id',array(':id'=>100),'pl');//wyświetli test_pl 100
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 17:12