Description
Plusieurs tickets (#83 #81 #72) soulèvent le problème de la présence de virgule à la place de point dans les requêtes SQL, ce qui retourne une erreur. Ce problème vient du fait que le typecast float renvoyait un nombre à virgule (séparateur décimal français) à la place d'un point (séparateur décimal anglais).
La « racine du Mal » vient du fait que Libertempo est multilingue que la solution choisie pour gérer les traductions a été de définir la locale et toutes ses catégories dans la langue demandée.
Dans notre cas, le problème principal de cette méthode est que PHP joue en permanence avec les nombres à point « 3.14 » que nous fournissons en dur et ceux qui sont le résultat d'un typecast « 2,71 ». La syntaxe à virgule étant la syntaxe absorbante, les systèmes qui dépendent d'une syntaxe anglophone ne comprennent pas de quel nombre on parle, sans que le développeur comprenne où le bas blesse.
Il y a certainement d'autres soucis dû à la solution actuelle mais nous n'en avons pas encore connaissance.
Je propose donc de ne pas toucher à la locale serveur afin que les divers systèmes puissent travailler en paix et de définir une fois pour toute la langue de l'application dans le fichier de configuration.
Nous laissons à la charge de la méthode de traduction de vérifier si la locale applicative demandée correspond bien à une langue connue et si ce n'est pas le cas de retomber sur la langue par défaut.
Dernier besoin à résoudre : l'affichage. Il nous sera nécessaire d'avoir une classe de formatage des textes afin que les prix, les nombres décimaux, les date time, etc. soient dans un affichage cohérent pour l'utilisateur et donc de se baser sur la locale applicative. Il est possible de s'appuyer sur la suite de classes Intl pour cela.
Dites-moi si j'ai oublié quelques chose.
J'ai bien conscience que c'est encore beaucoup de travail et que ça implique de reprendre tous les affichages de float pour les encapsuler dans une méthode de formatage. Je pense que de toute façon le comportement de l'application et l'affichage des résultats doivent être séparés donc ça devrait faciliter le travail (#63 et les PR associées ont déjà exprimé ce fait).