123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
- /**
- *
- * Cube Framework $Id$ 8ovkBqaf1epmTeM7o56rGT9bUZA80PQ9hPf93TlApKA=
- *
- * @link http://codecu.be/framework
- * @copyright Copyright (c) 2015 CodeCube SRL
- * @license http://codecu.be/framework/license Commercial License
- *
- * @version 1.6
- */
- namespace Cube;
- class Locale
- {
- const LANG_TOKEN = 'LangToken';
- const DEFAULT_LOCALE = 'en';
- private static $_data = array(
- 'Albanian (Albania)' => 'sq_AL',
- 'Albanian' => 'sq',
- 'Arabic (Algeria)' => 'ar_DZ',
- 'Arabic (Bahrain)' => 'ar_BH',
- 'Arabic (Egypt)' => 'ar_EG',
- 'Arabic (Iraq)' => 'ar_IQ',
- 'Arabic (Jordan)' => 'ar_JO',
- 'Arabic (Kuwait)' => 'ar_KW',
- 'Arabic (Lebanon)' => 'ar_LB',
- 'Arabic (Libya)' => 'ar_LY',
- 'Arabic (Morocco)' => 'ar_MA',
- 'Arabic (Oman)' => 'ar_OM',
- 'Arabic (Qatar)' => 'ar_QA',
- 'Arabic (Saudi Arabia)' => 'ar_SA',
- 'Arabic (Sudan)' => 'ar_SD',
- 'Arabic (Syria)' => 'ar_SY',
- 'Arabic (Tunisia)' => 'ar_TN',
- 'Arabic (United Arab Emirates)' => 'ar_AE',
- 'Arabic (Yemen)' => 'ar_YE',
- 'Arabic' => 'ar',
- 'Belarusian (Belarus)' => 'be_BY',
- 'Belarusian' => 'be',
- 'Bulgarian (Bulgaria)' => 'bg_BG',
- 'Bulgarian' => 'bg',
- 'Catalan (Spain)' => 'ca_ES',
- 'Catalan' => 'ca',
- 'Chinese (China)' => 'zh_CN',
- 'Chinese (Hong Kong)' => 'zh_HK',
- 'Chinese (Singapore)' => 'zh_SG',
- 'Chinese (Taiwan)' => 'zh_TW',
- 'Chinese' => 'zh',
- 'Croatian (Croatia)' => 'hr_HR',
- 'Croatian' => 'hr',
- 'Czech (Czech Republic)' => 'cs_CZ',
- 'Czech' => 'cs',
- 'Danish (Denmark)' => 'da_DK',
- 'Danish' => 'da',
- 'Dutch (Belgium)' => 'nl_BE',
- 'Dutch (Netherlands)' => 'nl_NL',
- 'Dutch' => 'nl',
- 'English (Australia)' => 'en_AU',
- 'English (Canada)' => 'en_CA',
- 'English (India)' => 'en_IN',
- 'English (Ireland)' => 'en_IE',
- 'English (Malta)' => 'en_MT',
- 'English (New Zealand)' => 'en_NZ',
- 'English (Philippines)' => 'en_PH',
- 'English (Singapore)' => 'en_SG',
- 'English (South Africa)' => 'en_ZA',
- 'English (United Kingdom)' => 'en_GB',
- 'English (United States)' => 'en_US',
- 'English' => 'en',
- 'Estonian (Estonia)' => 'et_EE',
- 'Estonian' => 'et',
- 'Farsi (Iran)' => 'fa_IR',
- 'Finnish (Finland)' => 'fi_FI',
- 'Finnish' => 'fi',
- 'French (Belgium)' => 'fr_BE',
- 'French (Canada)' => 'fr_CA',
- 'French (France)' => 'fr_FR',
- 'French (Luxembourg)' => 'fr_LU',
- 'French (Switzerland)' => 'fr_CH',
- 'French' => 'fr',
- 'German (Austria)' => 'de_AT',
- 'German (Germany)' => 'de_DE',
- 'German (Luxembourg)' => 'de_LU',
- 'German (Switzerland)' => 'de_CH',
- 'German' => 'de',
- 'Greek (Cyprus)' => 'el_CY',
- 'Greek (Greece)' => 'el_GR',
- 'Greek' => 'el',
- 'Hebrew (Israel)' => 'iw_IL',
- 'Hebrew' => 'iw',
- 'Hindi (India)' => 'hi_IN',
- 'Hungarian (Hungary)' => 'hu_HU',
- 'Hungarian' => 'hu',
- 'Icelandic (Iceland)' => 'is_IS',
- 'Icelandic' => 'is',
- 'Indonesian (Indonesia)' => 'id_ID',
- 'Indonesian' => 'id',
- 'Irish (Ireland)' => 'ga_IE',
- 'Irish' => 'ga',
- 'Italian (Italy)' => 'it_IT',
- 'Italian (Switzerland)' => 'it_CH',
- 'Italian' => 'it',
- 'Japanese (Japan)' => 'ja_JP',
- 'Japanese (Japan, JP)' => 'ja_JP_JP',
- 'Japanese' => 'ja',
- 'Korean (South Korea)' => 'ko_KR',
- 'Korean' => 'ko',
- 'Latvian (Latvia)' => 'lv_LV',
- 'Latvian' => 'lv',
- 'Lithuanian (Lithuania)' => 'lt_LT',
- 'Lithuanian' => 'lt',
- 'Macedonian (Macedonia)' => 'mk_MK',
- 'Macedonian' => 'mk',
- 'Malay (Malaysia)' => 'ms_MY',
- 'Malay' => 'ms',
- 'Maltese (Malta)' => 'mt_MT',
- 'Maltese' => 'mt',
- 'Norwegian (Norway)' => 'no_NO',
- 'Norwegian (Norway, Nynorsk)' => 'no_NO_NY',
- 'Norwegian' => 'no',
- 'Polish (Poland)' => 'pl_PL',
- 'Polish' => 'pl',
- 'Portuguese (Brazil)' => 'pt_BR',
- 'Portuguese (Portugal)' => 'pt_PT',
- 'Portuguese' => 'pt',
- 'Romanian (Romania)' => 'ro_RO',
- 'Romanian' => 'ro',
- 'Russian (Russia)' => 'ru_RU',
- 'Russian' => 'ru',
- 'Kinyarwanda (Rwanda)' => 'rw_RW',
- 'Serbian (Bosnia and Herzegovina)' => 'sr_BA',
- 'Serbian (Montenegro)' => 'sr_ME',
- 'Serbian (Serbia and Montenegro)' => 'sr_CS',
- 'Serbian (Serbia)' => 'sr_RS',
- 'Serbian' => 'sr',
- 'Slovak (Slovakia)' => 'sk_SK',
- 'Slovak' => 'sk',
- 'Slovenian (Slovenia)' => 'sl_SI',
- 'Slovenian' => 'sl',
- 'Spanish (Argentina)' => 'es_AR',
- 'Spanish (Bolivia)' => 'es_BO',
- 'Spanish (Chile)' => 'es_CL',
- 'Spanish (Colombia)' => 'es_CO',
- 'Spanish (Costa Rica)' => 'es_CR',
- 'Spanish (Dominican Republic)' => 'es_DO',
- 'Spanish (Ecuador)' => 'es_EC',
- 'Spanish (El Salvador)' => 'es_SV',
- 'Spanish (Guatemala)' => 'es_GT',
- 'Spanish (Honduras)' => 'es_HN',
- 'Spanish (Mexico)' => 'es_MX',
- 'Spanish (Nicaragua)' => 'es_NI',
- 'Spanish (Panama)' => 'es_PA',
- 'Spanish (Paraguay)' => 'es_PY',
- 'Spanish (Peru)' => 'es_PE',
- 'Spanish (Puerto Rico)' => 'es_PR',
- 'Spanish (Spain)' => 'es_ES',
- 'Spanish (United States)' => 'es_US',
- 'Spanish (Uruguay)' => 'es_UY',
- 'Spanish (Venezuela)' => 'es_VE',
- 'Spanish' => 'es',
- 'Swedish (Sweden)' => 'sv_SE',
- 'Swedish' => 'sv',
- 'Thai (Thailand)' => 'th_TH',
- 'Thai (Thailand, TH)' => 'th_TH_TH',
- 'Thai' => 'th',
- 'Turkish (Turkey)' => 'tr_TR',
- 'Turkish' => 'tr',
- 'Ukrainian (Ukraine)' => 'uk_UA',
- 'Ukrainian' => 'uk',
- 'Vietnamese (Vietnam)' => 'vi_VN',
- 'Vietnamese' => 'vi',
- );
- /**
- *
- * locale value
- *
- * @var string
- */
- protected $_locale;
- /**
- *
- * class constructor
- *
- * @param string $locale
- */
- public function __construct($locale = null)
- {
- $this->setLocale($locale);
- }
- /**
- *
- * get active locale
- *
- * @return string
- */
- public function getLocale()
- {
- return $this->_locale;
- }
- /**
- *
- * set active locale
- *
- * @param string $locale
- *
- * @return \Cube\Locale
- */
- public function setLocale($locale)
- {
- if (array_search($locale, self::$_data) !== false) {
- $this->_locale = $locale;
- }
- else {
- $this->_locale = self::DEFAULT_LOCALE;
- }
- setlocale(LC_COLLATE, $this->_locale);
- if (!in_array($this->_locale, array('tr', 'tr_TR'))) {
- setlocale(LC_CTYPE, $this->_locale); // for some reason this gives error for the turkish locales
- }
- setlocale(LC_MONETARY, $this->_locale);
- setlocale(LC_TIME, $this->_locale);
- setlocale(LC_NUMERIC, self::DEFAULT_LOCALE); // numeric values are always displayed in en locale
- return $this;
- }
- /**
- *
- * get locale array
- *
- * @return array
- */
- public static function getData()
- {
- return self::$_data;
- }
- /**
- *
- * get the (name) key of a locale or false if not found
- *
- * @param string $locale
- *
- * @return string|false
- */
- public static function getLocaleKey($locale)
- {
- return array_search($locale, self::$_data);
- }
- /**
- *
- * get the name (key) of a locale, or return the initial value if not found
- *
- * @param string $locale
- *
- * @return string
- */
- public static function getLocaleName($locale)
- {
- return (($output = self::getLocaleKey($locale)) === false) ? $locale : $output;
- }
- /**
- *
- * check if a locale variable exists in the locales array and return true if it is, false otherwise
- *
- * @param string $locale
- *
- * @return bool
- */
- public static function isLocale($locale)
- {
- if (array_search($locale, self::$_data) !== false) {
- return true;
- }
- return false;
- }
- }
|