Hallo ursus,
number_format geht auch ohne locale.
Mit dem default (bei mir wohl "en_US.UTF-8").
Auf meinem PC muss ich als locale de-DE, nicht de_DE angeben, das ist unter Windows und Linux scheinbar unterschiedlich oder Du hast Dich vertippt.
Nein:
In der PHP Sandbox klappt setlocale weder mit de_DE noch de-DE, da scheint dieses locale gar nicht installiert.
Ja. Wenn man Internationalisierung zu nutzen wünscht, dann sollte man im Betriebssystem dafür auch Unterstützung haben. Folgende Linuxbefehle sind also wichtig:
locale -a;
… gibt unter Linux Auskunft was alles installiert und also verfügbar ist. Achte darauf diese auch mit dem Zusatz für die Kodierung zu verwenden, sonst wird das nichts. Also z.B. "de_DE.UTF-8", "de_DE.utf8" tut es in PHP dann auch, "de_de.utf8" aber nicht...
apt install locales-all;
… installiert alle locale.
locale -a | grep -iP '^de'
… zeigt die verfügbaren deutschen Versionen an. Bei mir (ohne Paket locales-all) sind das:
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_IT.utf8
de_LI.utf8
de_LU.utf8
auf dem Webserver:
de_AT
de_AT@euro
de_AT.utf8
de_BE
de_BE@euro
de_BE.utf8
de_CH
de_CH.utf8
de_DE
de_DE@euro
de_DE.utf8
de_IT
de_IT.utf8
de_LI.utf8
de_LU
de_LU@euro
de_LU.utf8
Auf einem professionell betriebenen Webserver sollten aus obigem Grund alle locale vorhanden sein. Falls nicht: Den Support terrorisieren.