@nieselfriem: Die Einstellungen von Deinem Programm aus plattformübergreifend zu ändern ist nicht wirklich sinnvoll möglich, weil Du nicht weisst was man bei `setlocale()` übergeben muss/kann. Denn auch das hängt sehr vom Betriebssystem ab und da dann auch noch mal welche Locales überhaupt konfiguriert sind und zur Verfügung stehen. Das Linuxsystem bei dem 'deu_deu' funktioniert, gibt es aber ziemlich sicher nicht. 'de_DE' könnte unter Linux funktionieren wenn diese Locale konfiguriert wurde. Das muss aber nicht sein. Ich habe auf meinen Rechnern meistens nur eine englische Locale konfiguriert. Der einzig wirklich portable und damit IMHO sinnvolle Wert bei `setlocale()` ist die leere Zeichenkette um die Locale zu setzen die im System verwendet wird. *Das* funktioniert auf jedem System. Dann formatiert man die Währungswerte so wie der Benutzer das eingestellt hat. Aber Vorsicht: Wenn man Eurowerte ausgeben möchte, muss man dann natürlich auch sicherstellen, das der Benutzer auch Euro als Währung verwendet. Wobei einem dann auch noch passieren kann das im System tatsächlich nur die C Locale existiert, dann hat man verloren.
Wenn Du auf jeden Fall '12,50 €' als Ergebnis haben willst, warum gehst Du dann über Funktionen bei denen ja gerade der Zweck ist, das man die Formatierung so bekommt wie der Benutzer oder mindestens der Administrator des Systems das konfiguriert hat? Formatiere das doch einfach so wie *Du* willst, wenn Du ganz genau weisst wie das aussehen soll.
Ansonsten würde ich etwas betriebssystemunabhängiges wie `babel` verwenden:
Code: Alles auswählen
In [15]: print babel.numbers.format_currency(12.5, 'EUR', locale='de_DE')
12,50 €
Da sind auch die Locale-Namen standardisiert (RFC 4646).