Accorder au pluriel - commentaires > Accorder au pluriel 2006-03-28T09:48:48Z https://contrib.spip.net/Accorder-au-pluriel#comment385790 2006-03-28T09:48:48Z <p>nouvelle difficulté pour accorder par exemple :</p> <p>Il y a 1 nouv<strong>el</strong> article dans cette rubrique depuis 3 jours</p> <p>Il y a 2 nouve<strong>aux</strong> articles dans cette rubrique...</p> <p>où il ne s'agit plus seulement d'ajouter (aux) mais aussi de retrancher le « l »... une solution<small class="fine d-inline"> </small>?</p> > Accorder au pluriel 2005-01-23T14:14:56Z https://contrib.spip.net/Accorder-au-pluriel#comment343765 2005-01-23T14:14:56Z <p>Si j'avais mieux fouillé, je ne me serais pas cassé la tête à faire mon propre filtre<small class="fine d-inline"> </small>;-)</p> <p>Toutefois, le filtre ci-dessous pourrait intéresser :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>/*** * filtre à appliquer à #TOTAL_BOUCLE ***/ function pluriel($nombre, $singulier, $pluriel='') { global $pluriel_renvoie_zero; tester_variable("pluriel_renvoie_zero", true); if($pluriel_renvoie_zero AND $nombre == 0) return _T("local/public/spip:aucun_".$singulier); if($nombre == 0) return ''; if(!$pluriel) $pluriel = $singulier."s"; $code = $nombre>1?$pluriel:$singulier; return $nombre." "._T("local/public/spip:".$code); }</code></pre></div> <p>Il s'appuie sur les fichiers de langue de spip, et permet donc d'internationaliser l'accord du pluriel dans un site SPIP.</p> <p>Les paramètres à fournir seront donc les codes qu'on utilise aussi sous la forme <code class="spip_code spip_code_inline" dir="ltr"><:code:></code></p> <p>exemple :</p> <p><code class="spip_code spip_code_inline" dir="ltr">[(#TOTAL_BOUCLE|pluriel{article})]</code> renverra selon la valeur de #TOTAL_BOUCLE :</p> <ul class="spip"><li> 0 —> <:aucun_article :> ou rien si on positionne <code class="spip_code spip_code_inline" dir="ltr">$pluriel_renvoie_zero</code> à false dans <code class="spip_code spip_code_inline" dir="ltr">ecrire/mes_options.php3</code></li><li> 1 —> <:article :></li><li> 2 et plus —> <:articles :></li></ul> <p><code class="spip_code spip_code_inline" dir="ltr">[(#TOTAL_BOUCLE|pluriel{article,autre_forme_de_pluriel})]</code> :</p> <ul class="spip"><li> 2 et plus —> <:autre_forme_de_pluriel :></li></ul> <p>surement améliorable.</p> > Accorder au pluriel 2004-12-22T15:01:46Z https://contrib.spip.net/Accorder-au-pluriel#comment276012 2004-12-22T15:01:46Z <p>et boum<small class="fine d-inline"> </small>! j'ai pas vu que le filtre supprimait le non affichage en cas de résultat nul de #TOTAL_BOUCLE (ça m'a percé mon gazoduc).</p> <p>Donc j'ai modifié le filtre pour résoudre celà :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function accord_pluriel ($nombre, $nom1='', $nom2='') { if ($nom1=='') { return "Erreur filtre <b>&laquo; accord_pluriel &raquo;</b> : probl&egrave;me de param&egrave;tre"; } if ($nom2!='') { $nom2 = " ".$nom2; $nom2s = $nom2."s"; } if ($nombre == "0") { $texte = "" ; } elseif ($nombre == "1") { $texte = $nombre." ".$nom1.$nom2 ; } else { $texte = $nombre." ".$nom1."s".$nom2s ; } return $texte ; }</code></pre></div> <p>Un petit <code class="spip_code spip_code_inline" dir="ltr">elseif</code> en plus.</p> > Accorder au pluriel 2004-12-22T14:30:25Z https://contrib.spip.net/Accorder-au-pluriel#comment276008 2004-12-22T14:30:25Z <p>Je n'ai pas réussi à utiliser ta proposition de modification du filtre.</p> <p>Avec celle de la contrib, je fais simplement :<br class="manualbr"><code class="spip_code spip_code_inline" dir="ltr">[(#TOTAL_BOUCLE|accord_pluriel{notice, 'trouv&eacute;e'}) &agrave; ce nom]</code></p> <p>la virgule permet déjà d'utiliser plusieurs mots contigus (voir plus haut) et les quotes simples de faire passer le html.</p> <p>J'ai donc bien «<small class="fine d-inline"> </small>1 notice trouvée<small class="fine d-inline"> </small>» et «<small class="fine d-inline"> </small>3 notices trouvées<small class="fine d-inline"> </small>». Pour le cas où il n'y a rien, le tout est déjà dans une sous-boucle qui n'affiche rien s'il n'y a pas de résultats à #TOTAL_BOUCLE.</p> > Accorder au pluriel 2004-03-25T08:21:15Z https://contrib.spip.net/Accorder-au-pluriel#comment7684 2004-03-25T08:21:15Z <p>J'ai trouvé 2 problèmes en voulant utiliser ce filtre<small class="fine d-inline"> </small>; voilà de quoi il s'agit :</p> <p>1°) Avec le mot <code class="spip_code spip_code_inline" dir="ltr">"R&eacute;ponse"</code> (celui que je veux accorder) ça ne passe pas alors que « Réponse » passe. Pas très grave, mais déroutant...</p> <p>2°) Lorsque le nombre est égal à 0, le filtre retourne une chaîne de caractère contenant 0 et non une chaîne vide. J'ai donc réalisé une version qui me convient mieux :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function accord_pluriel ($nombre, $nom='') { switch ($nombre) { case 0 : return ""; case 1 : return $nombre." ".$nom; default : return $nombre." ".$nom."s"; } }</code></pre></div> <p>je l'utilise comme ceci pour afficher le nombre de réponses à un article :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_forums_decpt(FORUMS){id_article}{plat}></BOUCLE_forums_decpt> [<b><a href="#URL_ARTICLE">(#TOTAL_BOUCLE|accord_pluriel{réponse})</a></b>] <//B_forums_decpt></code></pre></div> > Accorder au pluriel 2003-05-02T19:40:07Z https://contrib.spip.net/Accorder-au-pluriel#comment1614 2003-05-02T19:40:07Z <p>Parce qu'il répond de façon simple à un besoin simple et que les situations peuvent être beaucoup plus complexes que de rajouter un « s » (son, ses, ...). Les devs de SPIP sont bien plus malins que moi et veulent le plus souvent se rapprocher de l'universalité de la fonction plutôt que de bidouilles ponctuelles de ce type. Mais c'est impec au cas au par cas.</p> > Accorder au pluriel 2003-05-02T14:05:19Z https://contrib.spip.net/Accorder-au-pluriel#comment1610 2003-05-02T14:05:19Z <p>Effectivement tout simple et très utile. Pourquoi ne pas suggérer que cette fonction soit ajoutée dans les prochaines distributions de SPIP<small class="fine d-inline"> </small>?</p>