2011-11-18 163 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(...)