Current File : //opt/RZphp73/includes/I18N/Format.php |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4.0 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003 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: Wolfram Kriesing <wk@visionp.de> |
// | |
// +----------------------------------------------------------------------+//
// $Id: Format.php 134347 2003-07-07 12:50:43Z cain $
require_once 'PEAR.php';
// define those here, since the dateTime and currency
// use those constants too
define( 'I18N_NUMBER_FLOAT' , 1 );
define( 'I18N_NUMBER_INTEGER' , 2 );
define( 'I18N_CURRENCY_LOCAL', 1 );
define( 'I18N_CURRENCY_INTERNATIONAL', 2 );
// this is the offset for the custom index
define( 'I18N_CUSTOM_FORMATS_OFFSET', 100);
/**
*
* @package I18N
*
*/
class I18N_Format extends PEAR
{
/**
* this var contains the current locale this instace works with
*
* @access protected
* @var string this is a string like 'de_DE' or 'en_US', etc.
*/
var $_locale;
/**
* the locale object which contains all the formatting specs
*
* @access protected
* @var object
*/
var $_localeObj = null;
/**
* do override this value !!!!
* @abstract
*/
var $_currentFormat = null;
var $_customFormats = array();
/**
*
*
* @version 02/11/22
* @author Wolfram Kriesing <wolfram@kriesing.de>
* @return void
* @access public
*/
function I18N_Format($locale)
// FIXXME if no locale is given try to use the local on of the system
// if it cant be detected use english and the user probable will use setFormat anyway
{
parent::PEAR();
$this->_locale = $locale;
//FIXXME catch locales that we dont have a class for yet, and use default class, which
// translates using google or something ...
if( include_once "I18N/Common/$locale.php" ){
$class = "I18N_Common_$locale";
$this->_localeObj = new $class();
}
}
/**
* This method creates a singleton instance for the given class.
* This is here, just so the DateTime, Number and Currency dont have
* to implement the same thing again, they only need to have a public method
* singleton() which calls this method here.
*
* @see singleton()
* @static
* @access private
* @param string the locale to use, i.e. 'de_DE'
* @param string the name of the class to return an object for
* @return object an instance of this class
*/
function &_singleton($locale,$class)
{
static $obj;
if (!isset($obj[$class])) {
$obj[$class] = new $class($locale);
}
return $obj[$class];
}
/**
* define a custom format given by $format and return the $format-id
* the format-id can be used to call format( x , format-id ) to
* tell the method you want to use the format with that id
*
* @see format()
* @version 02/11/20
* @author Wolfram Kriesing <wolfram@kriesing.de>
* @param string defines a custom format
* @return int the format-id, to be used with the format-method
*/
function setFormat($format)
{
return $this->_setFormat($format);
}
function _setFormat($format,$what='')
{
if((int)$format===$format) { // shall we only set the format to an already defined format?
return $this->{'_current'.ucfirst($what).'Format'} = $format;
}
// save a custom format and return the id of it, so the user can switch to it
// whenever needed
$index = (int)I18N_CUSTOM_FORMATS_OFFSET + sizeof($this->_customFormats);
$this->_customFormats[$index] = $format;
$this->{'_current'.ucfirst($what).'Format'} = $index;
return $index;
}
/**
*
*/
function getFormat()
{
return $this->_currentFormat;
}
}
?>