blob: 170e6c72510844d55b27cb53bfcce58590dcfeda [file] [log] [blame]
Derek Allard2067d1a2008-11-13 22:59:24 +00001<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2/**
3 * CodeIgniter
4 *
Greg Aker741de1c2010-11-10 14:52:57 -06005 * An open source application development framework for PHP 5.1.6 or newer
Derek Allard2067d1a2008-11-13 22:59:24 +00006 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
Greg Aker0711dc82011-01-05 10:49:40 -06009 * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
Derek Allard2067d1a2008-11-13 22:59:24 +000010 * @license http://codeigniter.com/user_guide/license.html
11 * @link http://codeigniter.com
12 * @since Version 1.0
13 * @filesource
14 */
15
16// ------------------------------------------------------------------------
17
18/**
19 * Language Class
20 *
21 * @package CodeIgniter
22 * @subpackage Libraries
23 * @category Language
24 * @author ExpressionEngine Dev Team
25 * @link http://codeigniter.com/user_guide/libraries/language.html
26 */
Derek Jones692c5482010-03-02 13:39:48 -060027class CI_Lang {
Derek Allard2067d1a2008-11-13 22:59:24 +000028
29 var $language = array();
30 var $is_loaded = array();
31
32 /**
33 * Constructor
34 *
35 * @access public
36 */
Greg Akera9263282010-11-10 15:26:43 -060037 function __construct()
Derek Allard2067d1a2008-11-13 22:59:24 +000038 {
39 log_message('debug', "Language Class Initialized");
40 }
41
42 // --------------------------------------------------------------------
43
44 /**
45 * Load a language file
46 *
47 * @access public
48 * @param mixed the name of the language file to be loaded. Can be an array
49 * @param string the language (english, etc.)
50 * @return mixed
51 */
Derek Jones692c5482010-03-02 13:39:48 -060052 function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '')
Derek Allard2067d1a2008-11-13 22:59:24 +000053 {
Greg Aker3a746652011-04-19 10:59:47 -050054 $langfile = str_replace('.php', '', $langfile);
Derek Jones692c5482010-03-02 13:39:48 -060055
56 if ($add_suffix == TRUE)
57 {
58 $langfile = str_replace('_lang.', '', $langfile).'_lang';
59 }
60
Greg Aker3a746652011-04-19 10:59:47 -050061 $langfile .= '.php';
Derek Allard2067d1a2008-11-13 22:59:24 +000062
63 if (in_array($langfile, $this->is_loaded, TRUE))
64 {
65 return;
66 }
67
Derek Jones692c5482010-03-02 13:39:48 -060068 $config =& get_config();
69
Derek Allard2067d1a2008-11-13 22:59:24 +000070 if ($idiom == '')
71 {
Derek Jones692c5482010-03-02 13:39:48 -060072 $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language'];
Derek Allard2067d1a2008-11-13 22:59:24 +000073 $idiom = ($deft_lang == '') ? 'english' : $deft_lang;
74 }
75
76 // Determine where the language file is and load it
Derek Jones692c5482010-03-02 13:39:48 -060077 if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile))
78 {
79 include($alt_path.'language/'.$idiom.'/'.$langfile);
80 }
Derek Allard2067d1a2008-11-13 22:59:24 +000081 else
82 {
Phil Sturgeonde3dbc32010-12-27 17:41:02 +000083 $found = FALSE;
84
85 foreach (get_instance()->load->get_package_paths(TRUE) as $package_path)
Derek Allard2067d1a2008-11-13 22:59:24 +000086 {
Phil Sturgeonde3dbc32010-12-27 17:41:02 +000087 if (file_exists($package_path.'language/'.$idiom.'/'.$langfile))
88 {
89 include($package_path.'language/'.$idiom.'/'.$langfile);
90 $found = TRUE;
91 break;
92 }
Derek Allard2067d1a2008-11-13 22:59:24 +000093 }
Phil Sturgeonde3dbc32010-12-27 17:41:02 +000094
95 if ($found !== TRUE)
Derek Allard2067d1a2008-11-13 22:59:24 +000096 {
Derek Allardea9e4e02009-08-17 17:40:48 +000097 show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile);
Derek Allard2067d1a2008-11-13 22:59:24 +000098 }
99 }
100
Derek Jones692c5482010-03-02 13:39:48 -0600101
Derek Allard2067d1a2008-11-13 22:59:24 +0000102 if ( ! isset($lang))
103 {
104 log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile);
105 return;
106 }
107
108 if ($return == TRUE)
109 {
110 return $lang;
111 }
112
113 $this->is_loaded[] = $langfile;
114 $this->language = array_merge($this->language, $lang);
115 unset($lang);
116
117 log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
118 return TRUE;
119 }
120
121 // --------------------------------------------------------------------
122
123 /**
124 * Fetch a single line of text from the language array
125 *
126 * @access public
Barry Mienydd671972010-10-04 16:33:58 +0200127 * @param string $line the language line
Derek Allard2067d1a2008-11-13 22:59:24 +0000128 * @return string
129 */
130 function line($line = '')
131 {
patwork571023b2011-04-11 11:56:41 +0200132 $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
Eric Barnese3c41cf2011-03-21 22:07:53 -0400133
134 // Because killer robots like unicorns!
patwork571023b2011-04-11 11:56:41 +0200135 if ($value === FALSE)
Eric Barnese3c41cf2011-03-21 22:07:53 -0400136 {
137 log_message('error', 'Could not find the language line "'.$line.'"');
138 }
139
patwork571023b2011-04-11 11:56:41 +0200140 return $value;
Derek Allard2067d1a2008-11-13 22:59:24 +0000141 }
142
143}
144// END Language Class
145
Derek Jones692c5482010-03-02 13:39:48 -0600146/* End of file Lang.php */
patwork571023b2011-04-11 11:56:41 +0200147/* Location: ./system/core/Lang.php */