00001 <?php
00002 
00003 
00004 
00005 
00006 
00007 
00008 class GyroLocale {
00009         const UTF8 = 'UTF-8';
00010         
00011         private static $language = APP_LANG;
00012         private static $charset = APP_CHARSET;
00013         
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022         public static function set_locale($lang, $charset = APP_CHARSET) {
00023                 self::set_language($lang);
00024                 self::set_charset($charset);
00025                 
00026                 $locales = self::get_locales($lang);
00027                 $locales_encoded = array();
00028                 $encoding = strtolower(str_replace('-', '', $charset));
00029                 foreach($locales as $l) {
00030                         $locales_encoded[] = $l . '.' . $encoding;
00031                 }
00032                 setlocale(LC_ALL, array_merge($locales_encoded, $locales));
00033                 if (strtolower($lang) == 'en_us') {
00034                         GyroDate::$local_date_order = GyroDate::MONTH_DAY_YEAR;
00035                 }
00036                 else {
00037                         GyroDate::$local_date_order = GyroDate::DAY_MONTH_YEAR;
00038                 }
00039         }
00040         
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049         public static function get_locales($lang) {
00050                 $ret = array();
00051                 if (strlen($lang) == 2) {
00052                         switch ($lang) {
00053                         case 'en':
00054                                 $ret[] = 'en_US';
00055                                 $ret[] = 'en_GB';
00056                                 break;
00057                         default:
00058                                 
00059                                 $ret[] = $lang . '_' . strtoupper($lang);
00060                                 break;
00061                         }
00062                 }
00063                 $ret[] = $lang;
00064                 return $ret;            
00065         }
00066         
00067 
00068 
00069 
00070 
00071 
00072         public static function set_language($lang) {
00073                 $ret = self::$language;
00074                 self::$language = $lang;
00075                 return $ret;
00076         }
00077         
00078 
00079 
00080 
00081 
00082 
00083         public static function set_charset($charset) {
00084                 self::$charset = $charset;
00085         }
00086         
00087 
00088 
00089 
00090 
00091 
00092         public static function get_language() {
00093                 return self::$language;
00094         }
00095 
00096 
00097 
00098 
00099 
00100 
00101         public static function get_charset() {
00102                 return self::$charset;
00103         }
00104         
00105 
00106 
00107 
00108         public static function is_utf8() {
00109                 return strtoupper(self::get_charset()) == self::UTF8;                   
00110         }
00111 }
00112 
00113 if (!class_exists('Locale')) {
00114         class Locale extends GyroLocale {}
00115 }