cvs: pear /I18N Common.php Country.php Language.php Negotiator.php

From: Date: Wed, 13 Feb 2002 20:01:58 +0000
Subject: cvs: pear /I18N Common.php Country.php Language.php Negotiator.php
Groups: php.pear.cvs 
Request: Send a blank email to pear-cvs+get-2428@lists.php.net to get a copy of this message
murahachibu Wed Feb 13 15:01:58 2002 EDT Added files: /pear/I18N Common.php Language.php Country.php Negotiator.php Log: first commit, *still untested here in PEAR, experimental cvs add Language.php add Language.php

Index: pear/I18N/Common.php +++ pear/I18N/Common.php <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Naoki Shima <murahachibu@php.net> | // | | // +----------------------------------------------------------------------+// // $Id: Common.php,v 1.1 2002/02/13 20:01:58 murahachibu Exp $ require_once('PEAR.php'); class I18N_Common extends PEAR { // {{{ properties /** * @type : array * @access: private */ var $_codes; // }}} // {{{ constructor /** * Call parent::PEAR() for destuctor to be called, and initialize vars * * @return: void * @access: public */ function I18N_Common() { parent::PEAR(); $this->_codes = array(); } // }}} // {{{ _constructor() /** * Dummy constructor * * @access: private * @return: void */ function _constructor() { $this->I18N_Common(); } // }}} // {{{ destructor /** * It does nothing now * * @access: private * @return: void */ function _I18N_Common() { } // }}} // {{{ getAllCodes() /** * Return all the codes. Used by child classes. * * @return: array * @access: public */ function getAllCodes() { return $this->_codes; } // }}} } ?> Index: pear/I18N/Language.php +++ pear/I18N/Language.php <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Naoki Shima <murahachibu@php.net> | // | | // +----------------------------------------------------------------------+// // $Id: Language.php,v 1.1 2002/02/13 20:01:58 murahachibu Exp $ require_once('I18N/Common.php'); class I18N_Language extends I18N_Common { // {{ constructor /** * Save list of ISO-639-1 two letter language code to language name mapping to its initiating object * * @return: void * @access: public */ function I18N_Language() { // call constructor of parent class parent::_constructor(); /** * List of ISO-639-1. * Two letter code to Language mapping * If you need three letter code to Language mappng, * then fetch ISO-639-2 * @type : array * @access: private */ $this->_codes = array( 'aa' => 'Afar', 'ab' => 'Abkhazian', 'af' => 'Afrikaans', 'am' => 'Amharic', 'ar' => 'Arabic', 'as' => 'Assamese', 'ay' => 'Aymara', 'az' => 'Azerbaijani', 'ba' => 'Bashkir', 'be' => 'Byelorussian', 'bg' => 'Bulgarian', 'bh' => 'Bihari', 'bi' => 'Bislama', 'bn' => 'Bengali; Bangla', 'bo' => 'Tibetan', 'br' => 'Breton', 'ca' => 'Catalan', 'co' => 'Corsican', 'cs' => 'Czech', 'cy' => 'Welsh', 'da' => 'Danish', 'de' => 'German', 'dz' => 'Bhutani', 'el' => 'Greek', 'en' => 'English', 'eo' => 'Esperanto', 'es' => 'Spanish', 'et' => 'Estonian', 'eu' => 'Basque', 'fa' => 'Persian', 'fi' => 'Finnish', 'fj' => 'Fiji', 'fo' => 'Faeroese', 'fr' => 'French', 'fy' => 'Frisian', 'ga' => 'Irish', 'gd' => 'Scots Gaelic', 'gl' => 'Galician', 'gn' => 'Guarani', 'gu' => 'Gujarati', 'ha' => 'Hausa', 'hi' => 'Hindi', 'hr' => 'Croatian', 'hu' => 'Hungarian', 'hy' => 'Armenian', 'ia' => 'Interlingua', 'ie' => 'Interlingue', 'ik' => 'Inupiak', 'in' => 'Indonesian', 'is' => 'Icelandic', 'it' => 'Italian', 'iw' => 'Hebrew', 'ja' => 'Japanese', 'ji' => 'Yiddish', 'jw' => 'Javanese', 'ka' => 'Georgian', 'kk' => 'Kazakh', 'kl' => 'Greenlandic', 'km' => 'Cambodian', 'kn' => 'Kannada', 'ko' => 'Korean', 'ks' => 'Kashmiri', 'ku' => 'Kurdish', 'ky' => 'Kirghiz', 'la' => 'Latin', 'ln' => 'Lingala', 'lo' => 'Laothian', 'lt' => 'Lithuanian', 'lv' => 'Latvian, Lettish', 'mg' => 'Malagasy', 'mi' => 'Maori', 'mk' => 'Macedonian', 'ml' => 'Malayalam', 'mn' => 'Mongolian', 'mo' => 'Moldavian', 'mr' => 'Marathi', 'ms' => 'Malay', 'mt' => 'Maltese', 'my' => 'Burmese', 'na' => 'Nauru', 'ne' => 'Nepali', 'nl' => 'Dutch', 'no' => 'Norwegian', 'oc' => 'Occitan', 'om' => '(Afan) Oromo', 'or' => 'Oriya', 'pa' => 'Punjabi', 'pl' => 'Polish', 'ps' => 'Pashto, Pushto', 'pt' => 'Portuguese', 'qu' => 'Quechua', 'rm' => 'Rhaeto-Romance', 'rn' => 'Kirundi', 'ro' => 'Romanian', 'ru' => 'Russian', 'rw' => 'Kinyarwanda', 'sa' => 'Sanskrit', 'sd' => 'Sindhi', 'sg' => 'Sangro', 'sh' => 'Serbo-Croatian', 'si' => 'Singhalese', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'sm' => 'Samoan', 'sn' => 'Shona', 'so' => 'Somali', 'sq' => 'Albanian', 'sr' => 'Serbian', 'ss' => 'Siswati', 'st' => 'Sesotho', 'su' => 'Sundanese', 'sv' => 'Swedish', 'sw' => 'Swahili', 'ta' => 'Tamil', 'te' => 'Tegulu', 'tg' => 'Tajik', 'th' => 'Thai', 'ti' => 'Tigrinya', 'tk' => 'Turkmen', 'tl' => 'Tagalog', 'tn' => 'Setswana', 'to' => 'Tonga', 'tr' => 'Turkish', 'ts' => 'Tsonga', 'tt' => 'Tatar', 'tw' => 'Twi', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', 'vi' => 'Vietnamese', 'vo' => 'Volapuk', 'wo' => 'Wolof', 'xh' => 'Xhosa', 'yo' => 'Yoruba', 'zh' => 'Chinese', 'zu' => 'Zulu' ); } // }} // {{ _constructor() /** * fake constructor. calls actual constructor * * @return: void * @access: private * / function _constructor() { $this->I18N_Language(); } // }} // {{ _I18N_Language() /** * destructor. does nothing now. * * @return: void * @access: private * / function _I18N_Language() { } // }} // {{ isValidCode() /** * Check to see if passed Language code is valid meaning * defined in ISO-639-1. * * @param : string Language code to check * * @return: boolean * @access: public * / function isValidCode($code) { return in_array(strtolower($code),array_keys($this->_codes)); } // }} // {{ getName() /** * Return name of the language for language code passed * * @param : string language code * * @return: string name of the language * @access: public */ function getName($code = '') { if(($code = strtolower($code)) && in_array($code,array_keys($this->_codes))) { return $this->_codes[$code]; } return FALSE; } // }} } ?> Index: pear/I18N/Country.php +++ pear/I18N/Country.php <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Naoki Shima <murahachibu@php.net> | // | | // +----------------------------------------------------------------------+// // $Id: Country.php,v 1.1 2002/02/13 20:01:58 murahachibu Exp $ require_once('I18N/Common.php'); class I18N_Country extends I18N_Common { // {{ constructor /** * Save list of ISO-3166 two letter country code to country name mapping to its initiating object * * @return: void * @access: public */ function I18N_Country() { // call constructor of parent class parent::_constructor(); /** * List of ISO-3166 * Two letter code to Country name mapping. * @type : array * @access: private */ $this->_codes = array( 'AF' => 'AFGHANISTAN', 'AL' => 'ALBANIA', 'DZ' => 'ALGERIA', 'AS' => 'AMERICAN SAMOA', 'AD' => 'ANDORRA', 'AO' => 'ANGOLA', 'AI' => 'ANGUILLA', 'AQ' => 'ANTARCTICA', 'AG' => 'ANTIGUA AND BARBUDA', 'AR' => 'ARGENTINA', 'AM' => 'ARMENIA', 'AW' => 'ARUBA', 'AU' => 'AUSTRALIA', 'AT' => 'AUSTRIA', 'AZ' => 'AZERBAIJAN', 'BS' => 'BAHAMAS', 'BH' => 'BAHRAIN', 'BD' => 'BANGLADESH', 'BB' => 'BARBADOS', 'BY' => 'BELARUS', 'BE' => 'BELGIUM', 'BZ' => 'BELIZE', 'BJ' => 'BENIN', 'BM' => 'BERMUDA', 'BT' => 'BHUTAN', 'BO' => 'BOLIVIA', 'BA' => 'BOSNIA AND HERZEGOWINA', 'BW' => 'BOTSWANA', 'BV' => 'BOUVET ISLAND', 'BR' => 'BRAZIL', 'IO' => 'BRITISH INDIAN OCEAN TERRITORY', 'BN' => 'BRUNEI DARUSSALAM', 'BG' => 'BULGARIA', 'BF' => 'BURKINA FASO', 'BI' => 'BURUNDI', 'KH' => 'CAMBODIA', 'CM' => 'CAMEROON', 'CA' => 'CANADA', 'CV' => 'CAPE VERDE', 'KY' => 'CAYMAN ISLANDS', 'CF' => 'CENTRAL AFRICAN REPUBLIC', 'TD' => 'CHAD', 'CL' => 'CHILE', 'CN' => 'CHINA', 'CX' => 'CHRISTMAS ISLAND', 'CC' => 'COCOS (KEELING) ISLANDS', 'CO' => 'COLOMBIA', 'KM' => 'COMOROS', 'CG' => 'CONGO', 'CD' => 'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 'CK' => 'COOK ISLANDS', 'CR' => 'COSTA RICA', 'CI' => 'COTE D\'IVOIRE', 'HR' => 'CROATIA (local name: Hrvatska)', 'CU' => 'CUBA', 'CY' => 'CYPRUS', 'CZ' => 'CZECH REPUBLIC', 'DK' => 'DENMARK', 'DJ' => 'DJIBOUTI', 'DM' => 'DOMINICA', 'DO' => 'DOMINICAN REPUBLIC', 'TP' => 'EAST TIMOR', 'EC' => 'ECUADOR', 'EG' => 'EGYPT', 'SV' => 'EL SALVADOR', 'GQ' => 'EQUATORIAL GUINEA', 'ER' => 'ERITREA', 'EE' => 'ESTONIA', 'ET' => 'ETHIOPIA', 'FK' => 'FALKLAND ISLANDS (MALVINAS)', 'FO' => 'FAROE ISLANDS', 'FJ' => 'FIJI', 'FI' => 'FINLAND', 'FR' => 'FRANCE', 'FX' => 'FRANCE, METROPOLITAN', 'GF' => 'FRENCH GUIANA', 'PF' => 'FRENCH POLYNESIA', 'TF' => 'FRENCH SOUTHERN TERRITORIES', 'GA' => 'GABON', 'GM' => 'GAMBIA', 'GE' => 'GEORGIA', 'DE' => 'GERMANY', 'GH' => 'GHANA', 'GI' => 'GIBRALTAR', 'GR' => 'GREECE', 'GL' => 'GREENLAND', 'GD' => 'GRENADA', 'GP' => 'GUADELOUPE', 'GU' => 'GUAM', 'GT' => 'GUATEMALA', 'GN' => 'GUINEA', 'GW' => 'GUINEA-BISSAU', 'GY' => 'GUYANA', 'HT' => 'HAITI', 'HM' => 'HEARD AND MC DONALD ISLANDS', 'VA' => 'HOLY SEE (VATICAN CITY STATE)', 'HN' => 'HONDURAS', 'HK' => 'HONG KONG', 'HU' => 'HUNGARY', 'IS' => 'ICELAND', 'IN' => 'INDIA', 'ID' => 'INDONESIA', 'IR' => 'IRAN (ISLAMIC REPUBLIC OF)', 'IQ' => 'IRAQ', 'IE' => 'IRELAND', 'IL' => 'ISRAEL', 'IT' => 'ITALY', 'JM' => 'JAMAICA', 'JP' => 'JAPAN', 'JO' => 'JORDAN', 'KZ' => 'KAZAKHSTAN', 'KE' => 'KENYA', 'KI' => 'KIRIBATI', 'KP' => 'KOREA, DEMOCRATIC PEOPLE\'S REPUBLIC OF', 'KR' => 'KOREA, REPUBLIC OF', 'KW' => 'KUWAIT', 'KG' => 'KYRGYZSTAN', 'LA' => 'LAO PEOPLE\'S DEMOCRATIC REPUBLIC', 'LV' => 'LATVIA', 'LB' => 'LEBANON', 'LS' => 'LESOTHO', 'LR' => 'LIBERIA', 'LY' => 'LIBYAN ARAB JAMAHIRIYA', 'LI' => 'LIECHTENSTEIN', 'LT' => 'LITHUANIA', 'LU' => 'LUXEMBOURG', 'MO' => 'MACAU', 'MK' => 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 'MG' => 'MADAGASCAR', 'MW' => 'MALAWI', 'MY' => 'MALAYSIA', 'MV' => 'MALDIVES', 'ML' => 'MALI', 'MT' => 'MALTA', 'MH' => 'MARSHALL ISLANDS', 'MQ' => 'MARTINIQUE', 'MR' => 'MAURITANIA', 'MU' => 'MAURITIUS', 'YT' => 'MAYOTTE', 'MX' => 'MEXICO', 'FM' => 'MICRONESIA, FEDERATED STATES OF', 'MD' => 'MOLDOVA, REPUBLIC OF', 'MC' => 'MONACO', 'MN' => 'MONGOLIA', 'MS' => 'MONTSERRAT', 'MA' => 'MOROCCO', 'MZ' => 'MOZAMBIQUE', 'MM' => 'MYANMAR', 'NA' => 'NAMIBIA', 'NR' => 'NAURU', 'NP' => 'NEPAL', 'NL' => 'NETHERLANDS', 'AN' => 'NETHERLANDS ANTILLES', 'NC' => 'NEW CALEDONIA', 'NZ' => 'NEW ZEALAND', 'NI' => 'NICARAGUA', 'NE' => 'NIGER', 'NG' => 'NIGERIA', 'NU' => 'NIUE', 'NF' => 'NORFOLK ISLAND', 'MP' => 'NORTHERN MARIANA ISLANDS', 'NO' => 'NORWAY', 'OM' => 'OMAN', 'PK' => 'PAKISTAN', 'PW' => 'PALAU', 'PS' => 'PALESTINIAN TERRITORY, OCCUPIED', 'PA' => 'PANAMA', 'PG' => 'PAPUA NEW GUINEA', 'PY' => 'PARAGUAY', 'PE' => 'PERU', 'PH' => 'PHILIPPINES', 'PN' => 'PITCAIRN', 'PL' => 'POLAND', 'PT' => 'PORTUGAL', 'PR' => 'PUERTO RICO', 'QA' => 'QATAR', 'RE' => 'REUNION', 'RO' => 'ROMANIA', 'RU' => 'RUSSIAN FEDERATION', 'RW' => 'RWANDA', 'KN' => 'SAINT KITTS AND NEVIS', 'LC' => 'SAINT LUCIA', 'VC' => 'SAINT VINCENT AND THE GRENADINES', 'WS' => 'SAMOA', 'SM' => 'SAN MARINO', 'ST' => 'SAO TOME AND PRINCIPE', 'SA' => 'SAUDI ARABIA', 'SN' => 'SENEGAL', 'SC' => 'SEYCHELLES', 'SL' => 'SIERRA LEONE', 'SG' => 'SINGAPORE', 'SK' => 'SLOVAKIA (Slovak Republic)', 'SI' => 'SLOVENIA', 'SB' => 'SOLOMON ISLANDS', 'SO' => 'SOMALIA', 'ZA' => 'SOUTH AFRICA', 'GS' => 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS', 'ES' => 'SPAIN', 'LK' => 'SRI LANKA', 'SH' => 'ST. HELENA', 'PM' => 'ST. PIERRE AND MIQUELON', 'SD' => 'SUDAN', 'SR' => 'SURINAME', 'SJ' => 'SVALBARD AND JAN MAYEN ISLANDS', 'SZ' => 'SWAZILAND', 'SE' => 'SWEDEN', 'CH' => 'SWITZERLAND', 'SY' => 'SYRIAN ARAB REPUBLIC', 'TW' => 'TAIWAN, PROVINCE OF CHINA', 'TJ' => 'TAJIKISTAN', 'TZ' => 'TANZANIA, UNITED REPUBLIC OF', 'TH' => 'THAILAND', 'TG' => 'TOGO', 'TK' => 'TOKELAU', 'TO' => 'TONGA', 'TT' => 'TRINIDAD AND TOBAGO', 'TN' => 'TUNISIA', 'TR' => 'TURKEY', 'TM' => 'TURKMENISTAN', 'TC' => 'TURKS AND CAICOS ISLANDS', 'TV' => 'TUVALU', 'UG' => 'UGANDA', 'UA' => 'UKRAINE', 'AE' => 'UNITED ARAB EMIRATES', 'GB' => 'UNITED KINGDOM', 'US' => 'UNITED STATES', 'UM' => 'UNITED STATES MINOR OUTLYING ISLANDS', 'UY' => 'URUGUAY', 'UZ' => 'UZBEKISTAN', 'VU' => 'VANUATU', 'VE' => 'VENEZUELA', 'VN' => 'VIET NAM', 'VG' => 'VIRGIN ISLANDS (BRITISH)', 'VI' => 'VIRGIN ISLANDS (U.S.)', 'WF' => 'WALLIS AND FUTUNA ISLANDS', 'EH' => 'WESTERN SAHARA', 'YE' => 'YEMEN', 'YU' => 'YUGOSLAVIA', 'ZM' => 'ZAMBIA', 'ZW' => 'ZIMBABWE' ); } // }} // {{ fake constructor /** * call actual constructor * * @return: void * @access: private * / function _constructor() { $this->I18N_Country(); } // }} // {{ destructor function _I18N_Country() { } function isValidCode($code) { return in_array(strtoupper($code),array_keys($this->_codes)); } // }} // {{ getName() /** * Return name of the country for country code passed * * @param : string country code * * @return: string name of the country * @access: public */ function getName($code = '') { if(($code = strtoupper($code)) && in_array($code,array_keys($this->_codes))) { return $this->_codes[$code]; } return FALSE; } // }} } ?> Index: pear/I18N/Negotiator.php +++ pear/I18N/Negotiator.php <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Naoki Shima <murahachibu@php.net> | // | | // +----------------------------------------------------------------------+// // $Id: Negotiator.php,v 1.1 2002/02/13 20:01:58 murahachibu Exp $ /** * * //instantiate Locale_Negotiator * $negotiator = & new Locale_Negotiator(); * * //define which language[s] your site supports :: optional * $supportLangs = array('fr','jp'); * * //find first matched language * $lang = $negotiator->getLanguageMatch($supportedLangs); * * //define which countries your site supports :: optional * $supportCountries = array('gb','us'); * * //find first matched Country * $countryCode = $negotiator->getCountryMatch($lang,$supportCountries); * * echo 'Language Code: '.$lang.' * Language Name: '.$negotiator->getLanguageName($lang).' * Country Code: '.$countryCode.' * Country Name: '.$negotiator->getCountryName($countryCode); */ class I18N_Negotiator{ // {{{ properties /** * Save default country code. * * @type : string * @access: private */ var $_defaultCountry; /** * Save default language code. * * @type : string * @access: private */ var $_defaultLanguage; /** * Save default charset code. * * @type : string * @access: private */ var $_defaultCharset; // }}} // {{{ constructor /** * Find language code, country code, charset code, and dialect or variant * of Locale setting in user's browser from $HTTP_ACCEPT_LANGUAGE, * $LANGUAGE_ACCEPT_CHARSET * * @param : string Default Language * @param : string Default Charset * @param : string Default Country */ function I18N_Negotiator($defaultLanguage = 'en', $defaultCharset = 'ISO-8859-1', $defaultCountry = '') { global $HTTP_ACCEPT_LANGUAGE,$HTTP_ACCEPT_CHARSET; $this->_defaultCountry = $defaultCountry; $this->_defaultLanguage = $defaultLanguage; $this->_defaultCharset = $defaultCharest; $langs = explode(',',$HTTP_ACCEPT_LANGUAGE); foreach($langs AS $lang_tag) { // Cut off any q-value that might come after a semi-colon if($pos = strpos($lang_tag, ';')) { $lang_tag = trim(substr($lang_tag,0,$pos)); } $lang = $lang_tag; if($pos = strpos($lang_tag, '-')) { $primary_tag = substr($lang_tag,0,$pos); $sub_tag = substr($lang_tag,($pos+1)); if($primary_tag == 'i') { /** * Language not listed in ISO 639 that are not variants * of any listed language, which can be registerd with the * i-prefix, such as i-cherokee */ $lang = $sub_tag; } else { $lang = $primary_tag; $this->_prepareI18NCountry(); if($this->_lc->isValidCode($sub_tag)) { $this->_country[$lang][] = $sub_tag; } else { /** * Dialect or variant information such as no-nynorsk or * en-cockney. * Script variations, such as az-arabic and az-cyrillic */ $this->_lang_variation[$lang][] = $sub_tag; } } } $this->_acceptLanguage[] = $lang; } $this->_acceptCharset = explode(',',$HTTP_ACCEPT_CHARSET); } // }}} // {{{ _constructor(); /** * Dummy constructor * call actual constructor */ function _constructor() { $this->I18N_Negotiator(); } // }}} // {{{ destructor /** * It does nothing right now */ function _I18N_Negotiater() { } // }}} // {{{ getCountryMatch() /** * Find Country Match * * @param : string * @param : array * * @return: array * @access: public */ function getCountryMatch($lang='',$countries = '') { if(!$lang) { return FALSE; } return $this->_getMatch($countries,$this->_country[$lang], $this->_defaultCountry); } // }}} // {{{ getVariantInfo() /** * Return variant info for passed parameter. * * @param : string * * @return: string * @access: public */ function getVariantInfo($lang) { return $this->_lang_variation[$lang]; } // }}} // {{{ getCharsetMatch() /** * Find Charset match * * @param : array * * @return: string * @access: public */ function getCharsetMatch($chasets = '') { return $this->_getMatch($charsets,$this->_acceptCharset, $this->_defaultCharset); } // }}} // {{{ getLanguageMatch() /** * Find Language match * * @param : array * * @return: string * @access: public */ function getLanguageMatch($langs = '') { return $this->_getMatch($langs,$this->_acceptLanguage, $this->_defaultLanguage); } // }}} // {{{ _getMatch() /** * Return first matched value from first and second parameter. * If there is no match found, then return third parameter. * * @param : array * @param : array * @param : string * * @return: string * @access: private */ function _getMatch($needle,$heystack,$default = '') { if(!$heystack) { return $default; } if(!$needle) { return array_shift($heystack); } if($result = array_shift(array_intersect($heystack,$needle))) { return $result; } return $default; } /** * Find Country name for country code passed * * @param : string country code * * @return: void * @access: private */ function getCountryName($code) { $this->_prepareI18NCountry(); return $this->_lc->getName($code); } /** * Find Country name for country code passed * * @param : string country code * * @return: void * @access: private */ function getLanguageName($code) { $this->_prepareI18NLanguage(); return $this->_ll->getName($code); } /** * Check if I18N_Language class has been instantiated and set to $this->_ll * If it's not, it will load the script and instantiate I18N_Language class * * @return: void * @access: private */ function _prepareI18NLanguage() { if(!isset($this->_ll)) { include_once('I18N/Language.php'); $this->_ll =& new I18N_Language(); } } /** * Check if I18N_Country class has been instantiated and set to $this->_lc * If it's not, it will load the script and instantiate I18N_Country class * * @return: void * @access: private */ function _prepareI18NCountry() { if(!isset($this->_lc)) { include_once('I18N/Country.php'); $this->_lc =& new I18N_Country(); } } } ?>
« previous php.pear.cvs (#2428) next »