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 }