Le filtre |singulier_ou_pluriel
est la plupart du temps utilisé pour accorder (singulier ou pluriel) les chaînes de langue en fonction du retour d’une balise.
Exemple
Dans notre fichier local_xx.php, nous déclarons :
'nombre_truc_un' => 'il y a 1 retour dans cette boucle.',
'nombre_truc_plus' => 'il y a @nb@ retours dans cette boucle.'
Puis nous écrivons notre boucle :
<BOUCLE_a(ARTICLES) {critère...}>
...
</BOUCLE_a>
[(#TOTAL_BOUCLE|singulier_ou_pluriel{local:nombre_truc_un, local:nombre_truc_plus})]
</B_a>
- Si la boucle ne retourne qu’un enregistrement, elle affichera :
il y a 1 retour dans cette boucle.
- Si la boucle retourne 36 enregistrements (par exemple), elle affichera :
il y a 36 retours dans cette boucle.
Note : si la valeur fournie est nulle, le filtre ne retourne rien, ce qui permet d’utiliser le filtre |sinon
à la suite.
Attention :
Ce filtre attend explicitement des item de langue comme arguments. Il ne faudra donc pas lui passer des balises de langue :
|singulier_ou_pluriel{module:item_un, module:item_plus}
est la bonne écriture ;
|singulier_ou_pluriel{<:module:item_un:>, <:module:item_plus:>}
est une mauvaise écriture.
Personnaliser le filtre
À partir de SPIP 4.0, il est possible de définir des fonctions pour personnaliser le fonctionnement de ce filtre
- pour une langue particulière. Pour cela, il faut définir une fonction suffixée par le code de langue. Par exemple, la fonction singulier_ou_pluriel_ar()
pour la langue arabe.
- ou de manière générique pour toutes les langues. En effet, SPIP fait appel à charger_fonction
pour récupérer la version de singulier_ou_pluriel
spécialisée par vos soins.