I just ran into a bug with SetLocaleInfo() use, and it pretty much reminded me that SetLocaleInfo() stinks. Michael said it years ago and it’s still true.
The only thing it’s useful for is a “Regional and Language Options” type app, and there’s already one of those in the control panel 🙂 Some apps try to call SetLocaleInfo() to set some behavior, and then call the date/time APIs or whatever. One app changed the currency symbol while it ran reports. Problem is that SetLocaleInfo() changes the user preferences for every app in the user account. Now the poor user’s going to be running some report or something and they’re records will be formatted wrong.
Some apps try to “fix” the setting, and change it only momentarily, then change it back. Now the other app will have a couple odd results in the middle of mostly-correct results, and it’ll be nearly impossible for them to figure out why it doesn’t work. SetLocaleInfo() also makes things slow because apps have to reload their settings all the time. The app that’s using SetLocaleInfo() needs to seriously wonder what happens if another app did the same thing and called SetLocaleInfo() right after you did. Obviously that wouldn’t be what you’d expect, so please don’t do it to everyone else.
Anyway, don’t use SetLocaleInfo(). If there’s some limitation you’re trying to work around by calling SetLocaleInfo(), let me know.