Просмотр файла system/classes/lang.php

Размер файла: 2.16Kb
  1. <?php
  2.  
  3. /*
  4. @author: Plato
  5. @modified: Artas
  6. @package: PerfCMS
  7. @year: 2012
  8. */
  9. class Lang
  10. {
  11. public $languages = array();
  12. public $cache = 0;
  13. public $language = 'en';
  14. public $data = array();
  15.  
  16. public function __construct() {
  17.  
  18. $this->get_languages();
  19. global $settings;
  20. global $system;
  21.  
  22. // if ($_SESSION['lang']) {
  23. // $this->set_language($_SESSION['lang']);
  24. // }
  25. // elseif ($_COOKIE['lang']) {
  26. // $this->set_language($_COOKIE['lang']);
  27. // }
  28. // else
  29. if ($settings['lang']) {
  30. $this->set_language($settings['lang']);
  31. }
  32. else {
  33. $this->set_language($system['lang']);
  34. }
  35.  
  36. @define('LANGUAGE', $this->language);
  37.  
  38.  
  39. $dir = opendir(SYS .'/lang/'. $this->language);
  40.  
  41. while ($file = readdir($dir)) {
  42. if ($file == '.' OR $file == '..' OR $file == 'lang.ini') continue;
  43.  
  44. $data = include_once SYS .'/lang/'. $this->language .'/' . $file;
  45.  
  46.  
  47. $this->data = array_merge($this->data, $data);
  48. }
  49. }
  50.  
  51.  
  52. public function get_browser_language() {
  53. if ( ! $_SERVER['HTTP_ACCEPT_LANGUAGE']) return 'en';
  54.  
  55.  
  56. $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  57.  
  58.  
  59. if ( ! in_array($language, array_keys($this->languages))) {
  60. $language = 'en';
  61. }
  62.  
  63. return $language;
  64. }
  65.  
  66.  
  67. public function set_language($language) {
  68.  
  69. if ( ! in_array($language, array_keys($this->languages))) {
  70. $language = $this->get_browser_language();
  71. }
  72.  
  73.  
  74. $this->language = $language;
  75.  
  76. $_SESSION['lang'] = $language;
  77. $_COOKIE['lang'] = $language;
  78. }
  79.  
  80.  
  81.  
  82. public function word($key) {
  83. if (empty($this->data[$key])) $data = $key;
  84. else $data = $this->data[$key];
  85.  
  86. if (is_string($key)) {
  87.  
  88. $lgr = parse_ini_file(SYS .'/lang/'. $this->language .'/lang.ini');
  89. $data = $lgr[$key];
  90. }
  91.  
  92. return $data;
  93. }
  94.  
  95.  
  96. protected function get_languages() {
  97. $dir = opendir(SYS .'/lang');
  98.  
  99. while ($lang = readdir($dir)) {
  100.  
  101. if ( ! file_exists(SYS .'/lang/'. $lang .'/lang.ini')) continue;
  102.  
  103.  
  104. $config = parse_ini_file(SYS .'/lang/'. $lang .'/lang.ini');
  105.  
  106. if (empty($config['name'])) continue;
  107.  
  108. $this->languages = array_merge($this->languages, array($lang => $config['name']));
  109. }
  110. }
  111. }