Türkçe'de Büyük-Küçük Harf Dönüşümü (İ/ı Sorunu)
"İstanbul" kelimesini büyük harfe çevirdin ve karşına "ISTANBUL" çıktı — ama bu yanlış, doğrusu "İSTANBUL". Bu ufak nokta farkı, Türkçe metinlerle çalışan yazılımcıların ve içerik üreticilerin sık düştüğü bir tuzaktır. Bu yazıda sorunun kökenini ve nasıl doğru çözüleceğini örneklerle anlatıyoruz.
Türkçe İ/ı harfi sorunu nedir?
İngilizce alfabede tek bir "i" harfi ve onun büyük hâli olan tek bir "I" vardır — nokta önemli değildir. Türkçede ise i/İ ve ı/I tamamen ayrı, birbirinden bağımsız iki harf çiftidir. Bir yazılım bu farkı bilmiyorsa her "i"yi körlemesine "I"ya çevirir — bu da kelimenin anlamını bile değiştirebilecek bir hataya yol açar.
Dört harf: İ, ı, I, i nasıl eşleşir?
| Küçük harf | Doğru büyük hâli | Örnek kelime | Doğru çıktı |
|---|---|---|---|
| i (noktalı küçük) | İ (noktalı büyük) | iyi | İYİ |
| ı (noktasız küçük) | I (noktasız büyük) | ışık | IŞIK |
| İ (noktalı büyük) | i (noktalı küçük) | İZMİR | izmir |
| I (noktasız büyük) | ı (noktasız küçük) | KIZ | kız |
Kaynak: Unicode CLDR Türkçe (tr) yerel ayar büyük/küçük harf eşleme kuralları.
Araçlar neden bu hatayı yapar?
toUpperCase()'ı, Excel'in UPPER'ı, bazı metin editörlerinin "Aa" düğmesi) İngilizce/Unicode temel kurallarını uygular ve yerel ayar (locale) belirtilmediği sürece i↔I eşlemesini kullanır. Türkçeye özel eşleme yalnızca "tr" veya "tr-TR" yerel ayarı açıkça verildiğinde devreye girer.
Bu, kötü niyetli bir tasarım değil, bir varsayılan davranıştır: Unicode standardı "harf büyütme"nin dile göre farklı sonuçlar verebileceğini tanımlar ve Türkçe için özel bir kural (tr-TR özel durumu) içerir; ama bu kuralın kullanılması için yazılımın bunu açıkça istemesi gerekir. Aşağıdaki ortamlarda sorun sıkça görülür:
- Excel / Google Sheets:
UPPER()/LOWER()Türkçe yerel ayarı otomatik uygulamayabilir. - Basit metin editörleri: "Büyük harf yap" düğmeleri çoğunlukla düz ASCII mantığı kullanır.
- Programlama dilleri: Python'da
str.upper(), JS'te düztoUpperCase()Türkçe yerel ayar bilmez. - Toplu veri işleme: İsim listelerini büyütürken hata "İstanbul", "İzmir" gibi il adlarında sık görülür.
Türkçeyi doğru büyüt/küçült
HarfDönüş, tr-TR yerel ayarını kullanarak İ/ı/I/i dörtlüsünü her zaman doğru çevirir. Metnini yapıştır, sonucu anında gör.
Harf Çeviriciyi Aç →Örnek kelimeler: doğru ve yanlış çıktı
Aşağıdaki tablo, yaygın Türkçe kelimelerin İngilizce mantığıyla (yanlış) ve tr-TR yerel ayarıyla (doğru) büyütüldüğünde ne çıktığını karşılaştırır. Fark, özellikle yer adlarında ve baş harfi "İ" veya "ı" olan kelimelerde belirginleşir:
| Kelime | Yanlış (İngilizce mantık) | Doğru (tr-TR) |
|---|---|---|
| İstanbul | ISTANBUL | İSTANBUL |
| Iğdır | IĞDIR | IĞDIR * |
| ışık | ISIK | IŞIK |
| iyi | IYI | İYİ |
| kız | KIZ (bazen KİZ) | KIZ |
| diyoruz | DIYORUZ | DİYORUZ |
* Iğdır zaten büyük I ile başlar (noktasız), bu yüzden İngilizce mantıkta da doğru çıkar — sorun yalnızca noktalı "İ" ile başlayan/ geçen kelimelerde ortaya çıkar.
Türkçe İ/ı sorununu nasıl çözersin?
toLocaleUpperCase('tr-TR') / toLocaleLowerCase('tr-TR'), Python'da str.upper() yerine Türkçeye özel eşleme veya casefold temelli çözümler. Günlük kullanım için ise bunu otomatik yapan bir Türkçe harf çeviricisi en pratik yoldur.
Kod yazmıyorsan veya hızlıca bir metni düzeltmen gerekiyorsa, en pratik yol HarfDönüş'ün BÜYÜK HARF / küçük harf sekmelerini kullanmaktır — araç arka planda tr-TR yerel ayarını uygular, metin hiçbir sunucuya gönderilmez. Geliştiriciyseniz aynı mantığı kodunuza uygulayabilirsiniz:
- JavaScript:
toLocaleUpperCase('tr-TR')/toLocaleLowerCase('tr-TR')kullanın; düztoUpperCase()'dan kaçının. - Excel/Sheets: Türkçe içerikte sonucu manuel kontrol edin; gerekirse önce bir Türkçe çeviriciden geçirin.
- Python/SQL: İsim/il alanlarında özel bir Türkçe eşleme tablosu kullanın.
- Hızlı/manuel işler: tr-TR uyumlu bir araca yapıştırıp anında doğru sonucu alın.
Bu doğru İ/ı dönüşümü yalnızca BÜYÜK/küçük harf modlarında değil, Başlık Düzeni, Cümle düzeni ve tersyüz gibi tüm modlarda da geçerlidir.