language.php
来自「国外免费开源的内容管理系统」· PHP 代码 · 共 774 行 · 第 1/2 页
PHP
774 行
$backtrace = debug_backtrace(); $info = array(); // Search through the backtrace to our caller $continue = true; while ( $continue && next($backtrace) )
{ $step = current($backtrace); $class = @ $step['class']; // We're looking for something outside of language.php if ( $class != 'JLanguage' && $class != 'JText') { $info['function'] = @ $step['function']; $info['class'] = $class; $info['step'] = prev($backtrace); // Determine the file and name of the file $info['file'] = @ $step['file']; $info['line'] = @ $step['line']; $continue = false; } } return $info; }
/**
* Getter for Name
*
* @access public
* @return string Official name element of the language * @since 1.5
*/
function getName() {
return $this->_metadata['name'];
} /** * Get a list of language files that have been loaded * * @access public * @param string $extension An option extension name * @return array * @since 1.5 */ function getPaths($extension = null) { if ( isset($extension) ) { if ( isset($this->_paths[$extension]) ) return $this->_paths[$extension]; return null; } else { return $this->_paths; } }
/**
* Getter for PDF Font Name
*
* @access public
* @return string name of pdf font to be used * @since 1.5
*/
function getPdfFontName() {
return $this->_metadata['pdffontname'];
}
/**
* Getter for Windows locale code page
*
* @access public
* @return string windows locale encoding * @since 1.5
*/
function getWinCP() {
return $this->_metadata['wincodepage'];
}
/**
* Getter for backward compatible language name
*
* @access public
* @return string backward compatible name * @since 1.5
*/
function getBackwardLang() {
return $this->_metadata['backwardlang'];
}
/**
* Get for the language tag (as defined in RFC 3066)
*
* @access public
* @return string The language tag * @since 1.5
*/
function getTag() {
return $this->_metadata['tag'];
}
/**
* Get locale property
*
* @access public
* @return string The locale property * @since 1.5
*/
function getLocale()
{
$locales = explode(',', $this->_metadata['locale']);
for($i = 0; $i < count($locales); $i++ ) {
$locale = $locales[$i];
$locale = trim($locale);
$locales[$i] = $locale;
}
//return implode(',', $locales);
return $locales;
}
/**
* Get the RTL property
*
* @access public
* @return boolean True is it an RTL language * @since 1.5
*/
function isRTL() {
return $this->_metadata['rtl'];
}
/**
* Set the Debug property
*
* @access public * @return boolean Previous value * @since 1.5
*/
function setDebug($debug) { $previous = $this->_debug;
$this->_debug = $debug; return $previous;
}
/**
* Get the Debug property
*
* @access public
* @return boolean True is in debug mode * @since 1.5
*/
function getDebug() {
return $this->_debug;
} /** * Get the default language code * * @access public * @return string Language code * @since 1.5 */ function getDefault() { return $this->_default; } /** * Set the default language code * * @access public * @return string Previous value * @since 1.5 */ function setDefault($lang) { $previous = $this->_default; $this->_default = $lang; return $previous; }
/**
* Get the list of orphaned strings if being tracked
*
* @access public
* @return boolean True is in debug mode * @since 1.5
*/
function getOrphans() {
return $this->_orphans;
} /** * Get the list of used strings * * Used strings are those strings requested and found either as a string or a constant * * @access public * @return array Used strings * @since 1.5 */ function getUsed() { return $this->_used; }
/**
* Determines is a key exists
*
* @access public
* @param key $key The key to check
* @return boolean True, if the key exists * @since 1.5
*/
function hasKey($key) {
return isset ($this->_strings[strtoupper($key)]);
}
/**
* Returns a associative array holding the metadata
*
* @access public
* @param string The name of the language
* @return mixed If $lang exists return key/value pair with the language metadata,
* otherwise return NULL * @since 1.5
*/
function getMetadata($lang)
{
$path = JLanguage::getLanguagePath(JPATH_BASE, $lang);
$file = $lang.'.xml';
$result = null;
if(is_file($path.DS.$file)) {
$result = JLanguage::_parseXMLLanguageFile($path.DS.$file);
}
return $result;
}
/**
* Returns a list of known languages for an area
*
* @access public
* @param string $basePath The basepath to use
* @return array key/value pair with the language file and real name * @since 1.5
*/
function getKnownLanguages($basePath = JPATH_BASE)
{
$dir = JLanguage::getLanguagePath($basePath);
$knownLanguages = JLanguage::_parseLanguageFiles($dir);
return $knownLanguages;
}
/**
* Get the path to a language
*
* @access public
* @param string $basePath The basepath to use
* @param string $language The language tag
* @return string language related path or null * @since 1.5
*/
function getLanguagePath($basePath = JPATH_BASE, $language = null )
{
$dir = $basePath.DS.'language';
if (!empty($language)) {
$dir .= DS.$language;
}
return $dir;
} /** * Set the language attributes to the given language * * Once called, the language still needs to be loaded using JLanguage::load() * * @access public * @param string $lang Language code * @return string Previous value * @since 1.5 */ function setLanguage($lang) {
$previous = $this->_lang; $this->_lang = $lang; $this->_metadata = $this->getMetadata($this->_lang); //set locale based on the language tag //TODO : add function to display locale setting in configuration $locale = setlocale(LC_TIME, $this->getLocale()); return $previous; }
/**
* Searches for language directories within a certain base dir
*
* @access public
* @param string $dir directory of files
* @return array Array holding the found languages as filename => real name pairs * @since 1.5
*/
function _parseLanguageFiles($dir = null)
{
jimport('joomla.filesystem.folder');
$languages = array ();
$subdirs = JFolder::folders($dir);
foreach ($subdirs as $path) {
$langs = JLanguage::_parseXMLLanguageFiles($dir.DS.$path);
$languages = array_merge($languages, $langs);
}
return $languages;
}
/**
* Parses XML files for language information
*
* @access public
* @param string $dir Directory of files
* @return array Array holding the found languages as filename => metadata array * @since 1.5
*/
function _parseXMLLanguageFiles($dir = null)
{
if ($dir == null) {
return null;
}
$languages = array ();
jimport('joomla.filesystem.folder');
$files = JFolder::files($dir, '^([-_A-Za-z]*)\.xml$');
foreach ($files as $file) {
if ($content = file_get_contents($dir.DS.$file)) {
if ($metadata = JLanguage::_parseXMLLanguageFile($dir.DS.$file)) {
$lang = str_replace('.xml', '', $file);
$languages[$lang] = $metadata;
}
}
}
return $languages;
}
/**
* Parse XML file for language information
*
* @access public
* @param string $path Path to the xml files
* @return array Array holding the found metadata as a key => value pair * @since 1.5
*/
function _parseXMLLanguageFile($path)
{
$xml = & JFactory::getXMLParser('Simple'); // Load the file
if (!$xml || !$xml->loadFile($path)) {
return null;
}
// Check that it's am metadata file
if (!$xml->document || $xml->document->name() != 'metafile') {
return null;
}
$metadata = array ();
//if ($xml->document->attributes('type') == 'language') {
foreach ($xml->document->metadata[0]->children() as $child) {
$metadata[$child->name()] = $child->data();
}
//}
return $metadata;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?