dimanche 27 juillet 2008

Petite fonction pour mettre au pluriel un nom français

function frenchPluralize($word) 
{
    $exceptions = array(
        'landau' => 'laudaus',
        'sarrau' => 'sarraus',
        'bleu' => 'bleus',
        'pneu' => 'pneus',
        'pou' => 'poux',
        'hibou' => 'hiboux', 
        'chou' => 'choux',
        'joujou' => 'joujoux',
        'genou' => 'genoux',
        'caillou' => 'cailloux',
        'bijou' => 'bijoux',
        'cal' => 'cals',
        'bal' => 'bals', 
        'carnaval' => 'carnavals',
        'pal' => 'pals', 
        'récital' => 'récitals', 
        'régal' => 'régals',
        'festival' => 'festivals',
        'chacal' => 'chacals',
        'bail' => 'baux',
        'corail' => 'coraux',
        'émail' => 'émaux',
        'gemmail' => 'gemmaux',
        'soupirail' => 'soupiraux',
        'travail' => 'travaux',
        'vantail' => 'vantaux',
        'vitrail' => 'vitraux',
        'bétail' => 'bestiaux',
        'crédit-bail' => 'crédits-baux'
    );
    if (isset($exceptions[$word])) {
        return $exceptions[$word];
    }
    if (preg_match('/[sxz]$/', $word)) {
        return $word;
    }
    $s =  preg_replace(
        array('/al$/', '/eu$/'), 
        array('aux', 'eux'),
        $word, -1, $count
    );
    return $count == 1 ? $s : $word . 's'; 
}
Voir aussi

1 commentaire:

Unknown a dit…

Bonjour Maxence.
Merci d'avoir cité ma fonction et merci de partager la tienne.

Les pluriels français sont un sujet très compliqué qui rend leurs automatisations quasiment impossibles contrairement à l'anglais.

La liste des officielles des exceptions est longue, je ne parle même pas des mots invariables ou des pluriels des mots français/étrangers (Scenario/Scenarii, Medium/Media).

Une fois réglé, il reste le soucis des pluriels multiples (Ciels/Cieux).

La langue français n'est pas faite pour l'informatique.

Jay