2011-11-18 21 views
3

我正在考虑一个本地化的功能,我确切知道它应该做什么,如何做到这一点,但我不能为我的生活弄清楚这是一个很好的名字。我很确定在英语中有一个体面的标准表达式,可以在这里出色地应用这个东西,我找不到它。命名功能! (因为我不能)

这个问题本身完全是语言不可知的,但这里的代码是在PHP中,因为这就是我现在正在写的东西。

所以,请为我的功能命名!

/** 
* Expand a number into a format string based on its value, giving 
* different format strings for 0, 1 and greater than one. 
* 
* example: 
* myFun(count($apples), 'No apples', 'one apple', '%d apples.'); 
* 
* @param integer $aNumber 
* @param string $ifZero 
* @param string $ifOne 
* @param string $ifGreaterThanOne 
* @return string 
*/ 
function myFunc($aNumber, $ifZero, $ifOne, $ifGreaterThanOne) 
{ 
    assert('is_integer($aNumber) && $aNumber > -1;'); 
    assert('is_string($ifZero);'); 
    assert('is_string($ifOne);'); 
    assert('is_string($ifGreaterThanOne);'); 

    $result = null; 

    if ($aNumber == 0) 
    { 
     $result = strpos($ifZero, '%d') > -1 
       ? sprintf($ifZero, $aNumber) 
       : $ifZero; 
    } 
    else if ($aNumber == 1) 
    { 
     $result = strpos($ifOne, '%d') > -1 
       ? sprintf($ifOne, $aNumber) 
       : $ifOne; 
    } 
    else 
    { 
     $result = strpos($ifGreaterThanOne, '%d') > -1 
       ? sprintf($ifGreaterThanOne, $aNumber) 
       : $ifGreaterThanOne; 
    } 
    return $result; 
} 
+0

@Dennis,我觉得你更清醒,我是因为我不知道你在说什么。尽管如此,乔尔和杰夫很可能只是对程序员在程序员支持网站上提出编程问题感到高​​兴,**和**也收到了实际有用的评论。 – Kris

回答

1

我见过的最技术的名字是“CardinalityLabel”,但我通常称它为CountLabel。

+0

那听起来像它!对我来说,cardinalize tho似乎更好。 http://en.wiktionary.org/wiki/cardinalize – Kris

1

它是做什么的?它格式化的东西。

它的作用是什么?数字。

它如何区分数字?箱。

binned_number_format 

将我的建议(或这些三个单词的顺序组合,你发现最有逻辑上的吸引力)。

+0

我正在寻找更多的东西像ordinalize,一个词的东西。我以前看过它,只是想不起来。 感谢您的尝试! – Kris

0

你正在做的是将整数转换为自然语言表达式。 所以我会去:

int2natural(); 
+0

我期望int2natural(2)返回'two' – Kris

0
humanize_item_count(...) 

或者

humanize_item_quantity(...)