CChoiceFormat
鍖 | system.i18n |
---|---|
缁ф壙 | class CChoiceFormat |
鐗堟湰 | $Id: CChoiceFormat.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/i18n/CChoiceFormat.php |
CChoiceFormat鏄竴涓姪鎵嬬被锛屽彲浠ユ牴鎹寚瀹氱殑鏁板兼潵閫夋嫨涓涓悎閫傛秷鎭
鍙夋嫨鐨勪俊鎭浠ヤ笅鏍煎紡瀛楃涓诧細
渚嬪锛氭寚瀹氱殑messages涓衡榥==1#one|n==2#two|n>2#others鈥欙紝 涓旀暟鍊间负2锛屽垯浼氱敓鎴愪袱涓猰essages銆
瀵逛簬鍍 鈥榥==1鈥欒繖绉嶈〃杈惧紡锛屾垜浠彲浠ョ洿鎺ョ敤鈥1鈥欐潵琛ㄧず锛 鎵浠ヤ笂闈㈢殑渚嬪瓙鍙互鍍忚繖鏍封1#one|2#two|n>2#others鈥欍
濡傛灉娌℃湁鎸囧畾浠讳綍鏁板肩殑鎯呭喌涓嬶紝 鏈鍚庝竴涓秷鎭皢琚繑鍥炪
'expr1#message1|expr2#message2|expr3#message3'鍏朵腑鐨別xpression搴旇鏄竴涓湁鏁堢殑PHP琛ㄨ揪寮忥紝鈥榥鈥欎綔涓哄敮涓鐨勫彉閲忋 渚嬪锛氣榥==1鈥 and 鈥榥%10==2 && n>10鈥欙紝涓や釜閮芥槸鍚堟硶鐨勮〃杈惧紡銆 鍙橀噺鈥榥鈥欏皢閲囧彇鎸囧畾鏁板笺 濡傛灉expression璁$畻鍊间负true锛岀浉搴斾俊鎭皢琚繑鍥炪
渚嬪锛氭寚瀹氱殑messages涓衡榥==1#one|n==2#two|n>2#others鈥欙紝 涓旀暟鍊间负2锛屽垯浼氱敓鎴愪袱涓猰essages銆
瀵逛簬鍍 鈥榥==1鈥欒繖绉嶈〃杈惧紡锛屾垜浠彲浠ョ洿鎺ョ敤鈥1鈥欐潵琛ㄧず锛 鎵浠ヤ笂闈㈢殑渚嬪瓙鍙互鍍忚繖鏍封1#one|2#two|n>2#others鈥欍
濡傛灉娌℃湁鎸囧畾浠讳綍鏁板肩殑鎯呭喌涓嬶紝 鏈鍚庝竴涓秷鎭皢琚繑鍥炪
鏂规硶璇︾粏
evaluate()
鏂规硶
protected static boolean evaluate(string $expression, mixed $n)
| ||
$expression | string | PHP琛ㄨ揪寮 |
$n | mixed | 鏁板 |
{return} | boolean | 杩斿洖璁$畻鍚庣殑缁撴灉 |
婧愮爜锛 framework/i18n/CChoiceFormat.php#71 (鏄剧ず)
protected static function evaluate($expression,$n)
{
return @eval("return $expression;");
}
鏍规嵁鎸囧畾鏁板兼潵璁$畻涓涓狿HP琛ㄨ揪寮忋
format()
鏂规硶
public static string format(string $messages, mixed $number)
| ||
$messages | string | 鍙夋嫨鐨勬秷鎭 鈥榚xpr1#message1|expr2#message2|expr3#message3鈥. 鍙傝CChoiceFormat鏇村璇︾粏銆 |
$number | mixed | 鏁板 |
{return} | string | 杩斿洖閫夋嫨鐨勪俊鎭 |
婧愮爜锛 framework/i18n/CChoiceFormat.php#45 (鏄剧ず)
public static function format($messages, $number)
{
$n=preg_match_all('/\s*([^#]*)\s*#([^\|]*)\|/',$messages.'|',$matches);
if($n===0)
return $messages;
for($i=0;$i<$n;++$i)
{
$expression=$matches[1][$i];
$message=$matches[2][$i];
if($expression===(string)(int)$expression)
{
if($expression==$number)
return $message;
}
else if(self::evaluate(str_replace('n','$n',$expression),$number))
return $message;
}
return $message; // return the last choice
}
鏍规嵁鎸囧畾鏁板兼牸寮忓寲娑堟伅銆