* @version $Revision: 1.2 $ $Date: 2005/04/24 00:21:13 $
* @package System.I18N
*/
/**
* Get the ChoiceFormat class.
*/
Prado::using('System.I18N.core.ChoiceFormat');
Prado::using('System.I18N.TTranslate');
/**
* TChoiceFormat class.
*
* This component performs message/string choice translation. The translation
* source is set in the TGlobalization handler. The following example
* demonstrated a simple 2 choice message translation.
*
* [1] One Apple. |[2] Two Apples
*
*
* The Choice has Value "1" (one), thus the translated string
* is "One Apple". If the Value was "2", then it will show
* "Two Apples".
*
* The message/string choices are separated by the pipe "|" followed
* by a set notation of the form
* # [1,2] -- accepts values between 1 and 2, inclusive.
* # (1,2) -- accepts values between 1 and 2, excluding 1 and 2.
* # {1,2,3,4} -- only values defined in the set are accepted.
* # [-Inf,0) -- accepts value greater or equal to negative infinity
* and strictly less than 0
* Any non-empty combinations of the delimiters of square and round brackets
* are acceptable.
*
* The string choosen for display depends on the Value property.
* The Value is evaluated for each set until the Value is found
* to belong to a particular set.
*
* Properties
* - Value, float,
*
Gets or sets the Value that determines which string choice to display.
*
* @author Xiang Wei Zhuo
* @version v1.0, last update on Fri Dec 24 21:38:49 EST 2004
* @package System.I18N
*/
class TChoiceFormat extends TTranslate
{
/**
* @return float the numerical value.
*/
function getValue()
{
return $this->getViewState('Value','');
}
/**
* Sets the numerical choice value
* @param float the choice value
*/
function setValue($value)
{
$this->setViewState('Value',$value,'');
}
/**
* Display the choosen translated string.
* Overrides the parent method, also calls parent's renderBody to
* translate.
*/
protected function translateText($text, $subs)
{
$text = parent::translateText($text, $subs);
$choice = new ChoiceFormat();
$value = $this->getValue();
$string = $choice->format($text, $value);
if($string)
return strtr($string, array('{Value}'=> $value));
}
}
?>