]>
Commit | Line | Data |
---|---|---|
59c06b17 CS |
1 | <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
2 | /** | |
3 | * CodeIgniter | |
4 | * | |
5 | * An open source application development framework for PHP 5.1.6 or newer | |
6 | * | |
7 | * @package CodeIgniter | |
8 | * @author ExpressionEngine Dev Team | |
9 | * @copyright Copyright (c) 2008 - 2011, EllisLab, Inc. | |
10 | * @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 | */ | |
27 | class CI_Lang { | |
28 | ||
29 | /** | |
30 | * List of translations | |
31 | * | |
32 | * @var array | |
33 | */ | |
34 | var $language = array(); | |
35 | /** | |
36 | * List of loaded language files | |
37 | * | |
38 | * @var array | |
39 | */ | |
40 | var $is_loaded = array(); | |
41 | ||
42 | /** | |
43 | * Constructor | |
44 | * | |
45 | * @access public | |
46 | */ | |
47 | function __construct() | |
48 | { | |
49 | log_message('debug', "Language Class Initialized"); | |
50 | } | |
51 | ||
52 | // -------------------------------------------------------------------- | |
53 | ||
54 | /** | |
55 | * Load a language file | |
56 | * | |
57 | * @access public | |
58 | * @param mixed the name of the language file to be loaded. Can be an array | |
59 | * @param string the language (english, etc.) | |
60 | * @param bool return loaded array of translations | |
61 | * @param bool add suffix to $langfile | |
62 | * @param string alternative path to look for language file | |
63 | * @return mixed | |
64 | */ | |
65 | function load($langfile = '', $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = '') | |
66 | { | |
67 | $langfile = str_replace('.php', '', $langfile); | |
68 | ||
69 | if ($add_suffix == TRUE) | |
70 | { | |
71 | $langfile = str_replace('_lang.', '', $langfile).'_lang'; | |
72 | } | |
73 | ||
74 | $langfile .= '.php'; | |
75 | ||
76 | if (in_array($langfile, $this->is_loaded, TRUE)) | |
77 | { | |
78 | return; | |
79 | } | |
80 | ||
81 | $config =& get_config(); | |
82 | ||
83 | if ($idiom == '') | |
84 | { | |
85 | $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language']; | |
86 | $idiom = ($deft_lang == '') ? 'english' : $deft_lang; | |
87 | } | |
88 | ||
89 | // Determine where the language file is and load it | |
90 | if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile)) | |
91 | { | |
92 | include($alt_path.'language/'.$idiom.'/'.$langfile); | |
93 | } | |
94 | else | |
95 | { | |
96 | $found = FALSE; | |
97 | ||
98 | foreach (get_instance()->load->get_package_paths(TRUE) as $package_path) | |
99 | { | |
100 | if (file_exists($package_path.'language/'.$idiom.'/'.$langfile)) | |
101 | { | |
102 | include($package_path.'language/'.$idiom.'/'.$langfile); | |
103 | $found = TRUE; | |
104 | break; | |
105 | } | |
106 | } | |
107 | ||
108 | if ($found !== TRUE) | |
109 | { | |
110 | show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile); | |
111 | } | |
112 | } | |
113 | ||
114 | ||
115 | if ( ! isset($lang)) | |
116 | { | |
117 | log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile); | |
118 | return; | |
119 | } | |
120 | ||
121 | if ($return == TRUE) | |
122 | { | |
123 | return $lang; | |
124 | } | |
125 | ||
126 | $this->is_loaded[] = $langfile; | |
127 | $this->language = array_merge($this->language, $lang); | |
128 | unset($lang); | |
129 | ||
130 | log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile); | |
131 | return TRUE; | |
132 | } | |
133 | ||
134 | // -------------------------------------------------------------------- | |
135 | ||
136 | /** | |
137 | * Fetch a single line of text from the language array | |
138 | * | |
139 | * @access public | |
140 | * @param string $line the language line | |
141 | * @return string | |
142 | */ | |
143 | function line($line = '') | |
144 | { | |
145 | $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line]; | |
146 | ||
147 | // Because killer robots like unicorns! | |
148 | if ($value === FALSE) | |
149 | { | |
150 | log_message('error', 'Could not find the language line "'.$line.'"'); | |
151 | } | |
152 | ||
153 | return $value; | |
154 | } | |
155 | ||
156 | } | |
157 | // END Language Class | |
158 | ||
159 | /* End of file Lang.php */ | |
160 | /* Location: ./system/core/Lang.php */ |