Revision 2049 | Revision 2254 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?php/*** CodeIgniter** An open source application development framework for PHP** This content is released under the MIT License (MIT)** Copyright (c) 2014 - 2018, British Columbia Institute of Technology** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in* all copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN* THE SOFTWARE.** @package CodeIgniter* @author EllisLab Dev Team* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)* @copyright Copyright (c) 2014 - 2018, British Columbia Institute of Technology (http://bcit.ca/)* @license http://opensource.org/licenses/MIT MIT License* @link https://codeigniter.com* @since Version 1.0.0* @filesource*/defined('BASEPATH') OR exit('No direct script access allowed');/*** Language Class** @package CodeIgniter* @subpackage Libraries* @category Language* @author EllisLab Dev Team* @link https://codeigniter.com/user_guide/libraries/language.html*/class CI_Lang {/*** List of translations** @var array*/public $language = array();/*** List of loaded language files** @var array*/public $is_loaded = array();/*** Class constructor** @return void*/public function __construct(){log_message('info', 'Language Class Initialized');}// --------------------------------------------------------------------/*** Load a language file** @param mixed $langfile Language file name* @param string $idiom Language name (english, etc.)* @param bool $return Whether to return the loaded array of translations* @param bool $add_suffix Whether to add suffix to $langfile* @param string $alt_path Alternative path to look for the language file** @return void|string[] Array containing translations, if $return is set to TRUE*/public function load($langfile, $idiom = '', $return = FALSE, $add_suffix = TRUE, $alt_path = ''){if (is_array($langfile)){foreach ($langfile as $value){$this->load($value, $idiom, $return, $add_suffix, $alt_path);}return;}$langfile = str_replace('.php', '', $langfile);if ($add_suffix === TRUE){$langfile = preg_replace('/_lang$/', '', $langfile).'_lang';}$langfile .= '.php';if (empty($idiom) OR ! preg_match('/^[a-z_-]+$/i', $idiom)){$config =& get_config();$idiom = empty($config['language']) ? 'english' : $config['language'];}if ($return === FALSE && isset($this->is_loaded[$langfile]) && $this->is_loaded[$langfile] === $idiom){return;}// Load the base file, so any others found can override it$basepath = BASEPATH.'language/'.$idiom.'/'.$langfile;if (($found = file_exists($basepath)) === TRUE){include($basepath);}// Do we have an alternative path to look in?if ($alt_path !== ''){$alt_path .= 'language/'.$idiom.'/'.$langfile;if (file_exists($alt_path)){include($alt_path);$found = TRUE;}}else{foreach (get_instance()->load->get_package_paths(TRUE) as $package_path){$package_path .= 'language/'.$idiom.'/'.$langfile;if ($basepath !== $package_path && file_exists($package_path)){include($package_path);$found = TRUE;break;}}}if ($found !== TRUE){show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile);}if ( ! isset($lang) OR ! is_array($lang)){log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile);if ($return === TRUE){return array();}return;}if ($return === TRUE){return $lang;}$this->is_loaded[$langfile] = $idiom;$this->language = array_merge($this->language, $lang);log_message('info', 'Language file loaded: language/'.$idiom.'/'.$langfile);return TRUE;}// --------------------------------------------------------------------/*** Language line** Fetches a single line of text from the language array** @param string $line Language line key* @param bool $log_errors Whether to log an error message if the line is not found* @return string Translation*/public function line($line, $log_errors = TRUE){$value = isset($this->language[$line]) ? $this->language[$line] : FALSE;// Because killer robots like unicorns!if ($value === FALSE && $log_errors === TRUE){log_message('error', 'Could not find the language line "'.$line.'"');}return $value;}}