Wer eine mehrsparchige Applikation erstellt, kann relativ problemlos mit
Thread.CurrentThread.CurrentCulture = new CultureInfo(currentCulture, false);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(currentUICulture, false);
die benötigte Sprache/Culture setzen. Dann werden neben Datumsfeldern auch Währungsfelder korrekt für die jeweilige Culture angezeigt. Möchte man nun z.B. Preise aus der Datenbank oder woher auch immer anzeigen, kommt etwas in der Art von '<%# string.Format("{0:C}", Eval("Price")) %>' zur Anwendung. So weit so gut. Möchte man aber aus bestimmten Gründen die Preise nur in einer Währung anzeigen, also z.B. in EUR und nicht noch für jede Culture Umrechnungstabellen hinterlegen, steht man vor dem Problem dass der Preis für z.B. en-US mit dem $ Währungssymbol angezeigt wird, was natürlich schlichtweg falsch ist, da der Preis eben nur in EUR vorliegt. Als einfachen Fix für das Problem kann man an der Stelle wo man die Culture-Threads setzt einfach noch:
NumberFormatInfo.CurrentInfo.CurrencySymbol = " EUR ";
hinzufügen und schon wird immer - egal welche Culture gewählt wurde - EUR als Währungsymbol angezeigt. Dabei ist zu beachten, dass man beim setzten der CultureThreads hinten noch den Parameter "false" hinzufügt, da sonst die Lokalisierungs-Einstellungen des Users berücksichtigt werden, was gerade in Hinsicht auf die Euro-Umstellung bei Systemen vor WindowsXP zu falschen Anzeigen führen kann.
[1] MSDN: Formatting Number Data for specific culture
Share or Bookmark this post…
6460b27b-f21a-4be9-85ae-d5a35a7daf1a|0|.0