Напишу ещё про турецкий и оставлю вас в покое.
Турки с реформы Ататюрка пользуются латиницей. Но пришлось несколько букв добавить, конечно. Например, в турецком есть "и с точкой", т.е. обычное i и "и без точки", которое такое же но без точки. Означает оно примерно "ы". И укаждого есть строчный и заглавный вариант. Заглавное "и с точкой" выглядит как заглавное и, только с точкой, а заглавное "и без точки" выглядит как знакомое нам заглавное и латинское (которое не отличить от строчного эль, но это отдельная история). Все очень логично. Пишем от руки, печатаем на станке, на машинке, все хорошо.
Enter computer. Захотели мы писать на компе на турецком. Имеем право. Возьмём за основу ASCII, т.е. кодировку для английского, и добавим недостающие буквы. В частности, заглавное "и с точкой" и строчное "и без точки". А оба i, т.е. с нашей турецкой точки зрения строчное и с точкой и заглавное и без точки оставим как есть, потому что они уже есть. Не, нуачо, не придумывать же другое i, специально для турецкого, тем более выглядят они одинаково. So far so good.
А теперь захотелось нам взять слово написанное строчными буквами и сделать там все буквы заглавными. Мы это отлично умеем делать. Нам даже не надо нигде хранить как из маленькой буквы сделать большую (и наоборот), потому что мы очень хитрые - у нас все маленькие буквы идут подряд и все большие идут подряд, т.е. между кодом маленькой буквы и большой разница всегда одна и та же. Мы ее даже не обязаны помнить, а можем посчитать, когда надо. Так что с точки зрения программиста
'B' = 'b' + 'A' - 'a'
Офигенно, сэкономили 2*28 байт и вообще молодцы.
А теперь применим эту логику к турецкому слову, где есть i и получим I. Т.е. строчное "и с точкой" превратилось в заглавное "и без точки", попросту говоря Ы, и наоборот.
Пяток лет назад турки жаловались, что в некоторых частях виндоуз это все ещё происходит.
Ну и вообще, в общем случае эту проблему решить невозможно, потому что в юникоде нигде язык не указан, и значит мы никогда не можем быть уверены, что правильно трансформируем слово. Потому что лет 50 назад кто-то что-то сэкономил. А юникод с большим уважением к традициям этот ужас сохранил.