A major issue is that no complete one-to-one 'substitution' exists. So
any 'total' solution will need to be a special hand-rolled function
with your own defined business/grammar rules.
Take a look at this discussion.
http://stackoverflow.com/questions/2598569/toupper-tolower-locale-german
It appears to give a good overview of the problem and provides some
"close to complete" solutions.
[How's your German? There appears to be a number of published
solutions on the web, but naturally most are in German. When one of my
shops ran across this problem - we brought some German-speakers. <g>]
-ralph