⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 language.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/*** @version		$Id: language.php 11305 2008-11-23 19:14:25Z ian $* @package		Joomla.Framework* @subpackage	Language* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.* @license		GNU/GPL, see LICENSE.php* Joomla! is free software. This version may have been modified pursuant* to the GNU General Public License, and as distributed it includes or* is derivative of works licensed under the GNU General Public License or* other free or open source software licenses.* See COPYRIGHT.php for copyright notices and details.*/// Check to ensure this file is within the rest of the frameworkdefined('JPATH_BASE') or die();/** * Languages/translation handler class * * @package 	Joomla.Framework * @subpackage	Language * @since		1.5 */class JLanguage extends JObject{	/**	 * Debug language, If true, highlights if string isn't found	 *	 * @var		boolean	 * @access	protected	 * @since	1.5	 */	var $_debug 	= false;	/**	 * The default language	 *	 * The default language is used when a language file in the requested language does not exist.	 *	 * @var		string	 * @access	protected	 * @since	1.5	 */	var $_default	= 'en-GB';	/**	 * An array of orphaned text	 *	 * @var		array	 * @access	protected	 * @since	1.5	 */	var $_orphans 	= array();	/**	 * Array holding the language metadata	 *	 * @var		array	 * @access	protected	 * @since	1.5	 */	var $_metadata 	= null;	/**	 * The language to load	 *	 * @var		string	 * @access	protected	 * @since	1.5	 */	var $_lang = null;	/**	 * List of language files that have been loaded	 *	 * @var		array of arrays	 * @access	public	 * @since	1.5	 */	var $_paths	= array();	/**	 * Translations	 *	 * @var		array	 * @access	protected	 * @since	1.5	 */	var $_strings = null;	/**	 * An array of used text, used during debugging	 *	 * @var		array	 * @access	protected	 * @since	1.5	 */	var $_used		= array();	/**	* Constructor activating the default information of the language	*	* @access	protected	*/	function __construct($lang = null)	{		$this->_strings = array ();		if ( $lang == null ) {			$lang = $this->_default;		}		$this->setLanguage($lang);		$this->load();	}	/**	 * Returns a reference to a language object	 *	 * This method must be invoked as:	 * 		<pre>  $browser = &JLanguage::getInstance([$lang);</pre>	 *	 * @access	public	 * @param	string $lang  The language to use.	 * @return	JLanguage  The Language object.	 * @since	1.5	 */	function & getInstance($lang)	{		$instance = new JLanguage($lang);		$reference = & $instance;		return $reference;	}	/**	* Translate function, mimics the php gettext (alias _) function	*	* @access	public	* @param	string		$string 	The string to translate	* @param	boolean	$jsSafe		Make the result javascript safe	* @return	string	The translation of the string	* @since	1.5	*/	function _($string, $jsSafe = false)	{		//$key = str_replace( ' ', '_', strtoupper( trim( $string ) ) );echo '<br />'.$key;		$key = strtoupper($string);		$key = substr($key, 0, 1) == '_' ? substr($key, 1) : $key;		if (isset ($this->_strings[$key]))		{			$string = $this->_debug ? "&bull;".$this->_strings[$key]."&bull;" : $this->_strings[$key];			// Store debug information			if ( $this->_debug )			{				$caller = $this->_getCallerInfo();				if ( ! array_key_exists($key, $this->_used ) ) {					$this->_used[$key] = array();				}				$this->_used[$key][] = $caller;			}		}		else		{			if (defined($string))			{				$string = $this->_debug ? '!!'.constant($string).'!!' : constant($string);				// Store debug information				if ( $this->_debug )				{					$caller = $this->_getCallerInfo();					if ( ! array_key_exists($key, $this->_used ) ) {						$this->_used[$key] = array();					}					$this->_used[$key][] = $caller;				}			}			else			{				if ($this->_debug)				{					$caller	= $this->_getCallerInfo();					$caller['string'] = $string;					if ( ! array_key_exists($key, $this->_orphans ) ) {						$this->_orphans[$key] = array();					}					$this->_orphans[$key][] = $caller;					$string = '??'.$string.'??';				}			}		}		if ($jsSafe) {			$string = addslashes($string);		}		return $string;	}	/**	 * Transliterate function	 *	 * This method processes a string and replaces all accented UTF-8 characters by unaccented	 * ASCII-7 "equivalents"	 *	 * @access	public	 * @param	string	$string 	The string to transliterate	 * @return	string	The transliteration of the string	 * @since	1.5	 */	function transliterate($string)	{		$string = htmlentities(utf8_decode($string));		$string = preg_replace(			array('/&szlig;/','/&(..)lig;/', '/&([aouAOU])uml;/','/&(.)[^;]*;/'),			array('ss',"$1","$1".'e',"$1"),			$string);		return $string;	}	/**	 * Check if a language exists	 *	 * This is a simple, quick check for the directory that should contain language files for the given user.	 *	 * @access	public	 * @param	string $lang Language to check	 * @param	string $basePath Optional path to check	 * @return	boolean True if the language exists	 * @since	1.5	 */	function exists($lang, $basePath = JPATH_BASE)	{		static	$paths	= array();		// Return false if no language was specified		if ( ! $lang ) {			return false;		}		$path	= $basePath.DS.'language'.DS.$lang;		// Return previous check results if it exists		if ( isset($paths[$path]) )		{			return $paths[$path];		}		// Check if the language exists		jimport('joomla.filesystem.folder');		$paths[$path]	= JFolder::exists($path);		return $paths[$path];	}	/**	 * Loads a single language file and appends the results to the existing strings	 *	 * @access	public	 * @param	string 	$extension 	The extension for which a language file should be loaded	 * @param	string 	$basePath  	The basepath to use	 * @param	string	$lang		The language to load, default null for the current language	 * @param	boolean $reload		Flag that will force a language to be reloaded if set to true	 * @return	boolean	True, if the file has successfully loaded.	 * @since	1.5	 */	function load( $extension = 'joomla', $basePath = JPATH_BASE, $lang = null, $reload = false )	{		if ( ! $lang ) {			$lang = $this->_lang;		}		$path = JLanguage::getLanguagePath( $basePath, $lang);		$filename = ( $extension == 'joomla' || $extension == '' ) ?  $lang : $lang . '.' . $extension ;		$filename = $path.DS.$filename.'.ini';		$result = false;		if (isset( $this->_paths[$extension][$filename] ) && ! $reload )		{			// Strings for this file have already been loaded			$result = true;		}		else		{			// Load the language file			$result = $this->_load( $filename, $extension );			// Check if there was a problem with loading the file			if ( $result === false )			{				// No strings, which probably means that the language file does not exist				$path		= JLanguage::getLanguagePath( $basePath, $this->_default);				$filename	= ( $extension == 'joomla' || $extension == '' ) ?  $this->_default : $this->_default . '.' . $extension ;				$filename	= $path.DS.$filename.'.ini';				$result = $this->_load( $filename, $extension, false );			}		}		return $result;	}	/**	* Loads a language file	*	* This method will not note the successful loading of a file - use load() instead	*	* @access	private	* @param	string The name of the file	* @param	string The name of the extension	* @return	boolean True if new strings have been added to the language	* @see		JLanguage::load()	* @since	1.5	*/	function _load( $filename, $extension = 'unknown', $overwrite = true )	{		$result	= false;		if ($content = @file_get_contents( $filename ))		{			//Take off BOM if present in the ini file			if ( $content[0] == "\xEF" && $content[1] == "\xBB" && $content[2] == "\xBF" )            {				$content = substr( $content, 3 );		  	}			$registry	= new JRegistry();			$registry->loadINI($content);			$newStrings	= $registry->toArray( );			if ( is_array( $newStrings) )			{				$this->_strings = $overwrite ? array_merge( $this->_strings, $newStrings) : array_merge( $newStrings, $this->_strings);				$result = true;			}		}		// Record the result of loading the extension's file.		if ( ! isset($this->_paths[$extension])) {			$this->_paths[$extension] = array();		}		$this->_paths[$extension][$filename] = $result;		return $result;	}	/**	 * Get a matadata language property	 *	 * @access	public	 * @param	string $property	The name of the property	 * @param	mixed  $default	The default value	 * @return	mixed The value of the property	 * @since	1.5	 */	function get($property, $default = null)	{		if (isset ($this->_metadata[$property])) {			return $this->_metadata[$property];		}		return $default;	}	/**	 * Determine who called JLanguage or JText	 *	 * @access	private	 * @return	array Caller information	 * @since	1.5	 */	function _getCallerInfo()	{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -