source: sourcecode/system/core/Lang.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 3.5 KB
Line 
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 */
27class 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 */
Note: See TracBrowser for help on using the repository browser.