singulier_ou_pluriel pour l'arabe
Voici le filtre singulier_ou_pluriel adapté à l'arabe (qui a plusieurs formes de pluriels suivant le nombre d'objets):
/**
* Afficher un message "un truc"/("deux trucs" pour l'arabe)/"N trucs"
* Les items sont à indiquer comme pour la fonction _T() sous la forme :
* "module:chaine"
*
* `param int $nb : le nombre
* `param string $chaine_un : l'item de langue si $nb vaut un (ou $nb > 10 pour l'arabe)
* `param string $chaine_plusieurs : l'item de lanque si $nb > 1 ($nb est compris entre 3 et 10 pour l'arabe)
* `param string $var : La variable à remplacer par $nb dans l'item de langue (facultatif, défaut "nb")
* `param array $vars : Les autres variables nécessaires aux chaines de langues (facultatif)
* `return string : la chaine de langue finale en utilisant la fonction _T()
*/
function ar_singulier_ou_pluriel($nb, $chaine_un, $chaine_plusieurs, $var = 'nb', $vars = array()) {
if (!$nb = intval($nb)) {
return '';
}
if (!is_array($vars)) {
return '';
}
$vars[$var] = $nb;
if ($GLOBALS['spip_lang'] == 'ar') {
$fem = substr($chaine_un, -2);
switch (true) {
case ($nb == 1):
if ($fem == 'ة') {
$chaine_un = $chaine_un . ' واحدة';
} else {
$chaine_un = $chaine_un . ' واحد';
}
return _T($chaine_un, $vars);
break;
case ($nb == 2):
if ($fem == 'ة') {
$chaine_deux = rtrim($chaine_un, $fem) . 'تان';
} else {
$chaine_deux = $chaine_un . 'ان';
}
return _T($chaine_deux, $vars);
break;
case ($nb >2 && $nb < 11):
return _T($chaine_plusieurs, $vars);
break;
default:
$chaine_un = $nb . ' ' . $chaine_un;
return _T($chaine_un, $vars);
}
} else {
if ($nb > 1) {
return _T($chaine_plusieurs, $vars);
} else {
return _T($chaine_un, $vars);
}
}
}