Bonjour,
Il y a quelques jours je me suis permis de faire un PR avec des corrections de fautes de français dans le core ainsi que des reformulations pour remplacer des textes compliqués à comprendre. Bref, j’ai fait un tour non exhaustif (et de loin !) du code. Durant ce périple, je suis tombé sur des choses pour lesquelles je me suis posé la question : « je fais un PR pour ça ou c’est voulu ? ». Je ne veux pas casser quelque chose et générer des effets de bord involontaires.
Attention, je pinaille !
1. Autorisation, droit et droits
En fonction des cas, on peut lire les messages d’exception suivants :
- Vous n’avez pas les droits de faire cette action
- Vous n’êtes pas autorisé à …
- Vous n’avez pas le droit …
Pour le 1. et le 3. :on ne dit pas « avoir les droits de … » mais « avoir le droit de … » ou « avoir les droits pour … ».
Pour le 2. : je n’en suis pas un fan, mais si l’utilisateur est une utilisatrice, elle aimerait peut-être lire « Vous n’êtes pas autorisée à … ». Peut-être faudrait-il utiliser la forme « autorisé(e) »
Quelle distinction est faite entre « avoir le droit de … » « avoir les droits pour … » et « être autorisé(e) » ?
2. Fonction de traduction utilisée
Dans tous les fichiers .php du répertoire desktop/php/ au début on trouve ce code :
<?php
if (!isConnect('admin')) {
throw new Exception('{{401 - Accès non autorisé}}');
}
Sauf pour desktop/php/reboot.php et desktop/php/shutdown.php ou on a :
<?php
if (!isConnect('admin')) {
throw new Exception(__('401 - Accès non autorisé', __FILE__));
}
Quelle est la fonction de traduction à utiliser ?
3. Jeedom ou config::byKey('product_name')
Il est rare de trouver le nom « Jeedom » écrit en dur, une référence est faite sur config::byKey('product_name') comma dans desktop/php/administration.php par exemple. Or dans desktop/php/interact.php ligne 233, on peut voir que « Jeedom » est écrit en dur :
<label class="col-xs-2 control-label">{{Autoriser Jeedom à supprimer les demandes syntaxiquement incorrectes}}</label>
4. Traductions avec un terme remplacé par une variable
Exemple desktop/php/administration.php ligne 58 :
<label class="col-xs-4 control-label">{{Nom de votre}} <?php echo $productName; ?>
Comme on le sait tous, l’ordre des mots n’est pas forcément le même dans toutes les langues et si déjà on s’est évertué à prévoir des traductions autant tenir compte de cet état de fait. Ne faudrait-il pas utiliser une syntaxe du style :
<label class="col-xs-4 control-label"><?php echo sprintf(__("Nom de votre %s", __FILE__), $productName); ?>
Et ce afin que les traductions mettre ce « %s » là où il doit être ? J’ai même vu des traductions en 2 fois (je n’ai pas d’exemple) du type (exemple faut où il manque les espaces, mais c’est pour la forme) :
<label class="col-xs-4 control-label">{{Nom de votre}} <?php echo $productName; ?> {{préféré}}
5. Version php vérifiée : < 5.5 !!
core/api/proApi.php lignes 152 à 159
version php < 5.5 ? C’est pourtant la version alpha de Jeedom qui requière php 7.4+
6. Code fonctionnel ?
Pour ce point je ne suis pas trop sûr de moi, je suis tombé sur ces bouts de code par hasard. J’ai hésité à faire une issue sur le repo github, mais j’en parle préférablement ici.
core/api/jeeApi.php lignes 908 à 924
core/api/proApi.php lignes 563 à 584
Je pense que dans ces 2 cas, il faudrait un switch/case sur $params['state'] avec l’exception dans default parce qu’avec ce code l’exception est toujours levée. D’ailleurs si personne ne s’en est plaint, c’est que cet appel API n’est pas vraiment utilisé… ou alors j’ai mal compris le code.
Voilà !
A+
Michel
