📄 language.php
字号:
// Try to determine the source if none was provided if (!function_exists('debug_backtrace')) { return null; } $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 array Orphaned text * @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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -