GetValueFormatted() liefert nicht die lokale Darstellung

Ich bin etwas verwirrt und glaube, ich habe ein Problem mit GetValueFormatted():

Linux unter Proxmox (IP-Symcon 6.3, Ubuntu (amd64), 22.01.2023, 4fba31afbb22):

echo getenv('LANG') . PHP_EOL;
echo GetValueFormatted(33235) . PHP_EOL;

ergibt bei Aufruf in der Konsole:

de_DE.UTF-8
22.9 °C

GUI:

Eine Symbox hat gleiches Verhalten.

Wo habe ich den Knoten im Hirn?
Ist schon klar, das ich das per number_format() gezielt anpassen kann, aber ich dachte GetValueFormatted() liefert das Ergebnis, das auch in der GUI herauskommt?

Was liefert IPS_GetSystemLanguage?

Die GUI hätte ich da nicht als Referenz angenommen, da auch hier die lokale Sprache mit berücksichtigt wird.
Ich kenne den Befehl nur so, dass das Variablenprofil auf ihn angewendet wird. Aber der Trenner wird dort nicht konfiguriert.
Michael

Antwort ist de_DE, von daher hätte ich das Komma als Dezimaltrenner erwartet.

Das ist bei Windows leer… darum meine Frage nach IPS_GetSystemLanguage. Weil, das ist ja was für Symcon zählt. :slight_smile:

Ja, hätte ich auch.

Das ist leider ein bekanntes Problem. Das liegt daran, dass die von uns genutzte sprintf Bibliothek (GitHub - fmtlib/fmt: A modern formatting library) das mit der Locale einfach nicht betrachtet und man dies bisher auch nicht umstellen kann :frowning:

paresy

Hier noch mal der Querverweis zum ursprünglichen Report: GetValueFormatted liefert falsches Format?

paresy

@paresy: danke

@yansoph: dann musst du, wenn es dich stört, selber diese Zahlen mit GetVakueFloat() holen und mit number_format() formatieren.