Bonjour,
avec le changement sur le getTypeName (passage du nombre d'élément en
argument de la méthode), on peut désormais changer le nombre
(singulier/pluriel) du nom du type. Cela est parfaitement logique au
regard de l'évolution des noms d'onglets (ie : appel à getTypeName pour
les noms des onglets).
Mais je me pose la question si nous ne devrions pas être beaucoup plus
explicite dans le fichier de langage (fr_FR.php) en ajoutant, par
exemple : $LANG['typeName'][$type]['singular'] et
$LANG['typeName'][$type]['plural'] avec $type correspond au type de la
classe.
Je prends en exemple la classe Ticket (choisie au hasard parmis celles
qui utilisent le passage du nombre à getTypeName) :
D'une part, nous utilisons, au moins, trois $LANG différents : deux dans
getTypeName et un troisième dans getTabNameForItem. Je suppose que le
changement de "return self::createTabEntry($LANG['title'][28], $nb);" à
"return self::createTabEntry(self::getTypeName($nb), $nb);"
(inc/ticket.class.php, ligne 384) est un travail en court.
Ma proposition est la suivante ajout dans le fichier locales/fr_FR.php de :
$LANG['typeName']['Ticket']['singular'] = "Ticket";
$LANG['typeName']['Ticket']['plural'] = "Tickets";
Cela éviterait les confusions et regrouperait les noms associés à un
type : j'ai compté jusqu'à 4 "Ticket" différents dans fr_FR.php (lignes:
976, 1367, 2434, 2457).
De la même manière, nous aurions :
$LANG['typeName']['Computer']['singular'] = "Ordinateur";
$LANG['typeName']['Computer']['plural'] = "Ordinateurs";
...
A termes, nous pourrions, même, définir une méthode getNameOfType (en
replacement de getTypeName) indépendante de toute classe (qui reposerait
uniquement sur le fichier de traduction). Par exemple :
class CommonGLPI {
...
static function getNameOfType($type, $nb) {
global $LANG;
if (isset($LANG['typeName'][$type])) {
if ($nb > 1)
return $LANG['typeName'][$type]['plural'];
else
return $LANG['typeName'][$type]['singular'];
}
return 'N/A';
}
...
}
Nous n'aurions, alors, pas à charger le fichier d'une classe pour en
connaitre son nom. Cette séparation de la gestion du nom par rapport à
la classe permettrait d'utiliser un nom de classe plutôt qu'un label.
Par exemple, au lieu d'utiliser $LANG['common'][15] dans les formulaires
de saisies, nous mettrions CommonGLPI::getNameOfType("Location", 1) ou
CommonGLPI::getNameOfType("Location", 2) selon le cas souhaité. Nous
n'aurions plus à nous soucier des indices.
Je poses la question car je me suis rendu compte que ce serait plus
simple de fonctionner comme cela avec les classes sur lesquelles je
travaille (NetworkAddress, IPAddress, IPNetwork, InternetDomain,
NetworkAlias, ...).
Cela ne fait pas partie de la roadmap. Mais ce n'est pas si lourd que
cela à mettre en oeuvre. Surtout si on le fait petit à petit. En tout
cas, si cela est validé maintenant, au lieu d'adapter le fichier de
chaque classe pour mettre à jour son getTypeName en y ajoutant le
passage du nombre d'items en paramètre (et devoir y revenir plus tard
dans le cas où nous souhaiterions complexifier getTypeName), nous
n'aurions qu'à modifier le fichier de langue et supprimer cette méthode
de la classe (sans oublier de modifier la méthode getTypeName de
CommonGLPI pour faire appel à getNameOfType).
Si vous le souhaitez, je peux vous soumettre un patch modifiant
CommonGLPI en ce sens.
Cordialement
Damien
--
--------------------------------------------------------------------
Damien TOURAINE - Ingénieur de Recherche CNRS, LIMSI-CNRS
Groupe de RV&A "VENISE", (http://www.limsi.fr/venise/)
Bat. 508, Universite Paris-Sud 91403 Orsay cedex - +33 1 69 85 81 64
--------------------------------------------------------------------
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev