/portal/application/core/MY_Lang.php

https://github.com/developerluiggi/canchas · PHP · 165 lines · 112 code · 29 blank · 24 comment · 23 complexity · 1cb7802748aee14dadb09c60c11055f0 MD5 · raw file

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. // CodeIgniter i18n library by Jérôme Jaglale
  3. // http://maestric.com/en/doc/php/codeigniter_i18n
  4. // version 10 - May 10, 2012
  5. class MY_Lang extends CI_Lang {
  6. /**************************************************
  7. configuration
  8. ***************************************************/
  9. // languages
  10. var $languages = array(
  11. 'es' => 'spanish',
  12. 'en' => 'english'
  13. );
  14. // special URIs (not localized)
  15. var $special = array (
  16. ""
  17. );
  18. // where to redirect if no language in URI
  19. var $default_uri = '';
  20. /**************************************************/
  21. function __construct()
  22. {
  23. parent::__construct();
  24. global $CFG;
  25. global $URI;
  26. global $RTR;
  27. $segment = $URI->segment(1);
  28. if (isset($this->languages[$segment])) // URI with language -> ok
  29. {
  30. $language = $this->languages[$segment];
  31. $CFG->set_item('language', $language);
  32. }
  33. else if($this->is_special($segment)) // special URI -> no redirect
  34. {
  35. return;
  36. }
  37. else // URI without language -> redirect to default_uri
  38. {
  39. // set default language
  40. $CFG->set_item('language', $this->languages[$this->default_lang()]);
  41. // redirect
  42. //header("Location: " . $CFG->site_url($this->localized($this->default_uri)), TRUE, 302);
  43. //exit;
  44. }
  45. }
  46. // get current language
  47. // ex: return 'en' if language in CI config is 'english'
  48. function lang()
  49. {
  50. global $CFG;
  51. $language = $CFG->item('language');
  52. $lang = array_search($language, $this->languages);
  53. if ($lang)
  54. {
  55. return $lang;
  56. }
  57. return NULL; // this should not happen
  58. }
  59. function is_special($uri)
  60. {
  61. $exploded = explode('/', $uri);
  62. if (in_array($exploded[0], $this->special))
  63. {
  64. return TRUE;
  65. }
  66. if(isset($this->languages[$uri]))
  67. {
  68. return TRUE;
  69. }
  70. return FALSE;
  71. }
  72. function switch_uri($lang)
  73. {
  74. $CI =& get_instance();
  75. $uri = $CI->uri->uri_string();
  76. if ($uri != "")
  77. {
  78. $exploded = explode('/', $uri);
  79. if($exploded[0] == $this->lang())
  80. {
  81. $exploded[0] = $lang;
  82. }
  83. $uri = implode('/',$exploded);
  84. }
  85. return $uri;
  86. }
  87. // is there a language segment in this $uri?
  88. function has_language($uri)
  89. {
  90. $first_segment = NULL;
  91. $exploded = explode('/', $uri);
  92. if(isset($exploded[0]))
  93. {
  94. if($exploded[0] != '')
  95. {
  96. $first_segment = $exploded[0];
  97. }
  98. else if(isset($exploded[1]) && $exploded[1] != '')
  99. {
  100. $first_segment = $exploded[1];
  101. }
  102. }
  103. if($first_segment != NULL)
  104. {
  105. return isset($this->languages[$first_segment]);
  106. }
  107. return FALSE;
  108. }
  109. // default language: first element of $this->languages
  110. function default_lang()
  111. {
  112. foreach ($this->languages as $lang => $language)
  113. {
  114. return $lang;
  115. }
  116. }
  117. // add language segment to $uri (if appropriate)
  118. function localized($uri)
  119. {
  120. if($this->has_language($uri)
  121. || $this->is_special($uri)
  122. || preg_match('/(.+)\.[a-zA-Z0-9]{2,4}$/', $uri))
  123. {
  124. // we don't need a language segment because:
  125. // - there's already one or
  126. // - it's a special uri (set in $special) or
  127. // - that's a link to a file
  128. }
  129. else
  130. {
  131. $uri = $this->lang() . '/' . $uri;
  132. }
  133. return $uri;
  134. }
  135. }
  136. /* End of file */