PHP pluralize

5 Cevap

Ben bir veritabanından görüntülemek için birçok bilgi var. Diğer bazı ingilizce olan, fransız. Bazıları bir liste, bir benzersiz ...

Soru: nasıl PHP tüm bu farklı seçenek yönetirim

IF ELSE SWITCH ARRAY (with all the text)

Diğer yöntem ...

şimdi kokuların listesinde sorun artış, bazı biri (koku) olduğu diğer pek çok (koku) s koyarak ya da bir ağrı var ..... yardım!

teşekkürler

5 Cevap

En iyi yolu, IMO her dilde, yani array('man'=>'men', 'woman'=>'women'); için tüm pluralization kuralları bir dizi var ve her tekil kelime için çoğul () işlevi yazmaktır.

Bazı ilham için CakePHP Inflector bakmak isteyebilirsiniz.

http://api.cakephp.org/class/inflector

Sen gettext extension bakmak isteyebilirsiniz. Daha spesifik olarak, ngettext() istediğini yapacak gibi geliyor: bu sürece saymak için bir dizi var gibi doğru kelimeleri pluralises.

print ngettext('odor', 'odors', 1); // prints "odor"
print ngettext('odor', 'odors', 4); // prints "odors"
print ngettext('%d cat', '%d cats', 4); // prints "4 cats"

Bunu yapmak için ekstra çalışma oldukça fazla olsa da, onun temel amacı olan, doğru çevrilmiş çoğul formları işlemek yapabilirsiniz.

Benim girişimi:

/**
 * Pluralizes a word if quantity is not one.
 *
 * @param int $quantity Number of items
 * @param string $singular Singular form of word
 * @param string $plural Plural form of word; function will attempt to deduce plural form from singular if not provided
 * @return string Pluralized word if quantity is not one, otherwise singular
 */
public static function pluralize($quantity, $singular, $plural=null) {
    if($quantity==1 || empty($singular)) return $singular;
    if($plural!==null) return $plural;

    $last_letter = strtolower($singular[strlen($singular)-1]);
    switch($last_letter) {
        case 'y':
            return substr($singular,0,-1).'ies';
        case 's':
            return $singular.'es';
        default:
            return $singular.'s';
    }
}

Orada bu işlevi doğru çoğul olmayacak istisnai bir sürü kelime açıkçası, ama bu $plural argüman için :-) budur

Kendi çoğullaştırmak fonksiyonunu yazma rota aşağı gidiyoruz o zaman yardımcı çoğalması bu algoritmik açıklamasını bulabilirsiniz:

http://www.csse.monash.edu.au/~damian/papers/HTML/Plurals.html

Ya da çok daha kolay yaklaşım muhtemelen internette mevcut hazır çoğullaştırmak işlevlerden birini kullanmak olacaktır:

http://www.eval.ca/2007/03/03/php-pluralize-method/