Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php (defined('BASEPATH')) OR exit('No direct script access allowed');
- // Originaly CodeIgniter i18n library by Jérôme Jaglale
- // http://maestric.com/en/doc/php/codeigniter_i18n
- //modification by Yeb Reitsma
- /*
- in case you use it with the HMVC modular extention
- uncomment this and remove the other lines
- load the MX_Loader class */
- //require APPPATH."third_party/MX/Lang.php";
- //class MY_Lang extends MX_Lang {
- class MY_Lang extends CI_Lang {
- /**************************************************
- configuration
- ***************************************************/
- // languages
- private $languages = array(
- 'en' => 'english',
- 'de' => 'german',
- 'fr' => 'french',
- 'nl' => 'dutch',
- );
- // special URIs (not localized)
- private $special = array (
- "admincp"
- );
- // where to redirect if no language in URI
- private $uri;
- private $default_uri;
- private $lang_code;
- /**************************************************/
- function MY_Lang()
- {
- parent::__construct();
- global $CFG;
- global $URI;
- global $RTR;
- $this->uri = $URI->uri_string();
- $this->default_uri = $RTR->default_controller;
- $uri_segment = $this->get_uri_lang($this->uri);
- $this->lang_code = $uri_segment['lang'] ;
- $url_ok = false;
- if ((!empty($this->lang_code)) && (array_key_exists($this->lang_code, $this->languages)))
- {
- $language = $this->languages[$this->lang_code];
- $CFG->set_item('language', $language);
- $url_ok = true;
- }
- if ((!$url_ok) && (!$this->is_special($uri_segment['parts'][0]))) // special URI -> no redirect
- {
- // set default language
- $CFG->set_item('language', $this->languages[$this->default_lang()]);
- $uri = (!empty($this->uri)) ? $this->uri: $this->default_uri;
- $uri = ($uri[0] != '/') ? '/'.$uri : $uri;
- $new_url = $CFG->config['base_url'].$this->default_lang().$uri;
- header("Location: " . $new_url, TRUE, 302);
- exit;
- }
- }
- // get current language
- // ex: return 'en' if language in CI config is 'english'
- function lang()
- {
- global $CFG;
- $language = $CFG->item('language');
- $lang = array_search($language, $this->languages);
- if ($lang)
- {
- return $lang;
- }
- return NULL; // this should not happen
- }
- function is_special($lang_code)
- {
- if ((!empty($lang_code)) && (in_array($lang_code, $this->special)))
- return TRUE;
- else
- return FALSE;
- }
- function switch_uri($lang)
- {
- if ((!empty($this->uri)) && (array_key_exists($lang, $this->languages)))
- {
- if ($uri_segment = $this->get_uri_lang($this->uri))
- {
- $uri_segment['parts'][0] = $lang;
- $uri = implode('/',$uri_segment['parts']);
- }
- else
- {
- $uri = $lang.'/'.$this->uri;
- }
- }
- return $uri;
- }
- //check if the language exists
- //when true returns an array with lang abbreviation + rest
- function get_uri_lang($uri = '')
- {
- if (!empty($uri))
- {
- $uri = ($uri[0] == '/') ? substr($uri, 1): $uri;
- $uri_expl = explode('/', $uri, 2);
- $uri_segment['lang'] = NULL;
- $uri_segment['parts'] = $uri_expl;
- if (array_key_exists($uri_expl[0], $this->languages))
- {
- $uri_segment['lang'] = $uri_expl[0];
- }
- return $uri_segment;
- }
- else
- return FALSE;
- }
- // default language: first element of $this->languages
- function default_lang()
- {
- // $browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : '';
- // $browser_lang = substr($browser_lang, 0,2);
- // return (array_key_exists($browser_lang, $this->languages)) ? $browser_lang: 'en';
- $lang = array_search(config_item('language'), $this->languages);
- if ($lang)
- {
- return $lang;
- }
- return 'en'; // return en if undefined languae
- }
- // add language segment to $uri (if appropriate)
- function localized($uri)
- {
- if (!empty($uri))
- {
- $uri_segment = $this->get_uri_lang($uri);
- if (!$uri_segment['lang'])
- {
- if ((!$this->is_special($uri_segment['parts'][0])) && (!preg_match('/(.+)\.[a-zA-Z0-9]{2,4}$/', $uri)))
- {
- $uri = $this->lang() . '/' . $uri;
- }
- }
- }
- return $uri;
- }
- }
- // END MY_Lang Class
- /* End of file MY_Config.php */
- /* Location: ./system/application/core/MY_Lang.php */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement