I haven't looked at wine code yet. However, I think I have an idea about locale use both in KDE and glibc-based programs. Those two use a totally different subsystem: KDE uses Qt unicode support from QString class. glibc has locale functions and supports both wide (16-bit) and byte (8-bit) strings. Here, nothing is expected to work until you call the set_locale fn.
In both cases, applications (including wine) have to be locale-aware in order for things to work. Most of the apps currently have lots of bugs related to locales in strings. You can ask for my help in such cases, as I am strongly for internatinalized programms.