code.fastix.org

Dateiansicht:

Datei:Projekte -> PHP:internationalisierte Zeitangaben ohne strftime oder Intl-Extension -> timestrings.class.php
md5:3bc65d9d0ff03ada299c3722c609f124
sha1:3cccde0dbe9571ed2e4ed638f37e0182ed17d238
Download-Link:Download
  1. <?php
  2.  
  3. class timestrings {
  4.         protected $allLanguages;
  5.         protected $dataDir = __DIR__  . '/data/';
  6.         protected $lang;
  7.         protected $arr;
  8.        
  9.         function __construct( $lang = false ) {
  10.                 if ( false === $lang ) {
  11.                         $lang = setlocale(LC_TIME,0);
  12.                 }
  13.                 $lang = $this->repair_lang ( $lang );
  14.                 $this->addLanguage( $lang );
  15.         }
  16.        
  17.         function addLanguage( $lang ) {
  18.                 $filename = $this->dataDir . 'date_names_by_number_' . $lang . '.ser';
  19.                 if ( file_exists( $filename ) && is_readable( $filename ) ) {
  20.                         $arr = $this->arr;
  21.                         $arr[$lang] = unserialize(file_get_contents( $filename) );
  22.                         $this->arr = $arr;
  23.                         $this->allLanguages[] = $lang;
  24.                         $this->lang = $lang;
  25.                         return true;
  26.             } else {
  27.                         trigger_error("file '${filename}' not found or not readable.", E_USER_ERROR );
  28.                 }              
  29.         }
  30.        
  31.         function setLanguage( $lang ) {
  32.                 $lang = $this->repair_Lang ( $lang );
  33.                 if (in_array( $lang, $this->allLanguages ) ) {
  34.                         $this->lang = $lang;
  35.                 } else {
  36.                         $this->addLanguage ( $lang );
  37.                 }
  38.         }
  39.        
  40.         function repair_Lang( $lang ) {
  41.                 $lang = trim($lang);
  42.                 $lang = str_replace( 'C.UTF-8', 'C', $lang );
  43.                 $lang = str_replace( '.utf-8', '.utf8', $lang );
  44.                 $lang = str_replace( '.UTF-8', '.utf8', $lang );
  45.                 return $lang;
  46.         }
  47.        
  48.         function getWeekdayName( $i, $lang=false ) {
  49.                 $i=(int) $i;
  50.                 if ( $i > 7 or $i < 0 ) {
  51.                         trigger_error( "Method:getWeekdayName: The given number of weekday ($i) is smaller then 0 or greater then 7" , E_USER_ERROR );
  52.                 }              
  53.                 return $this->getIT (1, $i, $lang );
  54.         }
  55.        
  56.         function getWeekdayShortName( $i, $lang=false ) {
  57.                 $i=(int) $i;
  58.                 if ( $i > 7 or $i < 0 ) {
  59.                         trigger_error( "Method:getWeekdayShortName: The given number of weekday ($i) is smaller then 0 or greater then 7" , E_USER_ERROR );
  60.                 }
  61.                 return $this->getIT (0, $i, $lang );
  62.         }
  63.        
  64.         function getMonthName( $i, $lang=false ) {
  65.                 $i=(int) $i;
  66.                 if ( $i > 12 or $i < 1 ) {
  67.                         trigger_error( "Method:getMonthName: The given number of month ($i) is smaller then 0 or greater then 12" , E_USER_ERROR );
  68.                 }              
  69.                 return $this->getIT (3, $i, $lang );
  70.         }
  71.        
  72.         function getMonthShortName( $i, $lang=false ) {
  73.                 $i=(int) $i;
  74.                 if ( $i > 12 or $i < 1 ) {
  75.                         trigger_error( "Method:getMonthName: The given number of month ($i) is smaller then 0 or greater then 12" , E_USER_ERROR );
  76.                 }              
  77.                 return $this->getIT (2, $i, $lang );
  78.         }      
  79.        
  80.        
  81.         function getIT ($k, $i, $lang ) {
  82.                 if ( $lang ) {
  83.                         $this->setLanguage( $lang );
  84.                 }
  85.  
  86.                 if ( isset( $this->arr[$this->lang][$k][$i] ) ) {
  87.                         return $this->arr[$this->lang][$k][$i];
  88.                 } else {
  89.                         trigger_error( "Unknown: arr[this->lang][${k}][${i}]" , E_USER_ERROR );
  90.                 }              
  91.         }
  92. }
  93.