Actually, the reason for this bug is very simple and the reason is same for most of the java projects that fail on Turkish locale. Turkish language has a unique characteristic. Unlike other languages:
i -uppercase-> İ (not I)
I -lowercase-> ı (not i)
as you can see, there are 4 possibilities in Turkish. ı I i İ
( http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#toUpperCase(java.util.Locale) )
So when there is a character conversion in application code (strings that are invisible to user), applications fail. For example id becomes İD, interceptor becomes İNTERCEPTOR and exceptions occur. This is happening because toLowerCase and toUpperCase methods doesn't enforce a locale argument and because of poor programming discipline, most developers (who are unaware of this issue and expect that uppercase of i same everywhere on the world) don't use these methods with locale arguments. If you want a java programme to run on Turkish locale computers, you must use these two methods with English locale (since java code is always English, this is not a problem) for user invisible strings.
As for your question, i think expecting an application server to run properly on any locale is fair. Turkish developers using Microsoft technologies tease java developers by asking them "can you run this java ide/app server without changing os locale?"
Posted by: bilgehan on August 24, 2008 at 07:04 AM