芝麻web文件管理V1.00
编辑当前文件:/home/strato/chroot/opt/RZphp80/includes/I18N/Messages/Common.php
| // | Naoki Shima
| // +----------------------------------------------------------------------+ // // $Id: Common.php 110339 2003-01-04 11:55:29Z mj $ // /** * this class provides language functionality, such as * determining the language of a given string, etc. * iso639-1 compliant, 2 letter code is used * iso639-1 http://www.loc.gov/standards/iso639-2/langcodes.html * * @package Language * @access public * @author Wolfram Kriesing
* @version 2001/12/29 */ class I18N_Messages_Common { // {{ properties /** * Holds messageID to corresponding message mapping * * @type : array * @access: private */ var $_message = array(); // {{ constructor /** * * * @access public * @author * @version */ function __construct( ) { # FIXXME pass a resource to the constructor which can be used to determine the # language of a string, it should be possible to use XML, DB, or whatever # this can then be used as a replacement for the array as used now } // }} // {{ I18N_Messages_Common() /** * for pre-ZE2 compatibility * * @access public * @author * @version */ function I18N_Messages_Common( ) { return $this->__construct(); } // }} // {{ determineLanuguage() /** * trys to get the language of a given string * * @access public * @author Wolfram Kriesing
* @version 01/12/29 * @param string $string the string which is used to try and determine its language * @return string iso-string for the language * */ function determineLanguage( $string , $source='default' ) { // include a file here, so one can provide its own file, // and to reduce compile time for php, since it will only be included when needed // the file that gets included might become very big if( $source=='default' ) include('I18N/Messages/determineLanguage.inc.php'); else include($source); // include the file given as parameter, it only needs to provide an array, as in the above included file // replace all non word-characters by a space, i hope that is ok for all languages $string = preg_replace( '/[\W\s]/' , ' ' ,$string); $splitString = explode(' ',$string); // get each single word in a field foreach( $splitString as $key=>$aString ) // remove spaces around the word and make it lower case $splitString[$key] = strtolower(trim($aString)); // simply intersect each language array with the array that we created by splitting the string // and the result that's size is the biggest is our language foreach( $languages as $lang=>$aLanguage ) $results[$lang] = sizeof(array_intersect($splitString,$aLanguage)); arsort($results); reset ($results); list($lang,) = each($results); return $lang; } // }} // {{ get() /** * Look for and return the message corresponds to the messageID passed. * Returns messageID when the corresponding message is not found * * @return: string * @access: public * @author: Naoki Shima
*/ function get($messageID = "") { return ($messageID !== "" && is_array($this->_message) && in_array($messageID, array_keys($this->_message))) ? $this->_message[$messageID] :$messageID; } // }} // {{ _() /** * Alias for get(). Function name might not be appropriate because it conflicts PEAR coding standard * that this is meant to be public function * * @param : string messageID * @return: string corresponding message * @access: public * @author: Naoki Shima
*/ function _($messageID = "") { return $this->get($messageID); } // }} // {{ set() /** * Set message ID to corresponding string * * @return: boolean * @access: public * @author: Naoki Shima
*/ function set($messageID = "",$str = "") { if($messageID === "") { return false; } if($str === "" && is_array($messageID)) { // user is passing an array $this->_message = $messageID; } else { $this->_message[$messageID] = $str; } return true; } // }} // {{ setCharset() /** * Set charset of message * * @param : string Charset * * @return: void * @access: public * @author: Naoki Shima
*/ function setCharset($charset = I18N_MESSAGES_DEFAULT_CHARSET) { $this->_charset = $charset; } // }} // {{ getCharset() /** * Returns charset of message. Returns null if it's not set. * * @return: mixed Charset * @access: public * @author: Naoki Shima
*/ function getCharset() { return ($this->_charset ? $this->_charset: false); } // }} // {{ bindDomain() /** * Bind domain to use * If domain is not passed and there's already a value set to domain, * then this method returns current domain. * * @param : string * * @return: string Current domain * @access: public * @author: Naoki Shima */ function bindDomain($domain = '') { if($domain === '') { return ($this->_domain ? $this->_domain : ''); } $this->_domain = $domain; return $domain; } // }} // {{ bindLanguage() /** * Bind language to use * If language is not passed and there's already a value set to domain, * then this method returns current domain. * * @param : string * * @return: string Current language * @access: public * @author: Naoki Shima
*/ function bindLanguage($lang = '') { if($lang === '') { return ($this->_lang ? $this->_lang : ''); } $this->_lang = $lang; return $lang; } // }} } // end of class ?>