O filtro |singulier_ou_pluriel é principalmente usado para concordar (singular ou plural) as strings de idioma em função do retorno de uma tag.
Exemplo
No nosso ficheiro local_xx.php, declaramos:
'numero_item_um' => 'há um retorno neste loop.',
'numero_item_mais' => 'há @nb@ retornos neste loop.'
Em seguida, escrevemos no nosso loop:
<BOUCLE_a(ARTICLES) {critério...}>
...
</BOUCLE_a>
[(#TOTAL_BOUCLE|singulier_ou_pluriel{local:numero_item_um, local:numero_item_mais})]
</B_a>
- Se o loop só retornar um registo, exibirá:
há um retorno neste loop.
- Se o loop retornar 36 registos, por exemplo, exibirá:
há 36 retornos neste loop.
Nota: se o valor fornecido for nulo, o filtro não retornará nada, o que permite usar o filtro |sinon em seguida.
Atenção:
Este filtro usa explicitamente os itens de idioma como argumentos. Não deve ser passado a tags de idioma:
|singulier_ou_pluriel{modulo:item_um, modulo:item_mais}
é a sintaxe correta;
|singulier_ou_pluriel{<:modulo:item_um:>, <:modulo:item_mais:>}
é uma sintaxe errada.
Personalisar o filtro
A partir do SPIP 4.0, é possível definir as funções para personalizar o funcionamento deste filtro:
- par um idioma particular. Para isso, é preciso definir uma função sufixada para o código de idioma. Por exemplo, a função singulier_ou_pluriel_ar() para o idioma árabe.
- ou de maneira genérica para todos os idiomas. Com efeito, o SPIP faz uma chamada a charger_fonction para recuperar a versão de singulier_ou_pluriel personalizada que deseja.