Türkçe metin araçları — sıfır bağımlılık.
Doğru büyük/küçük harf (İ/ı) · Slugify · Türk alfabesiyle sıralama · Ad-soyad normalizasyonu · Ünlü uyumlu ek üretimi
Turkish text utilities: correct casing, slugs, collation, name parsing and vowel-harmony suffixes. → English below
>>> "istanbul".upper()
'ISTANBUL' # ✗ noktasız I — "İSTANBUL" olmalıydı
>>> "DİYARBAKIR".lower()
'di̇yarbakir' # ✗ hayalet nokta (combining dot) + yanlış ı
>>> sorted(["çilek", "damla"])
['damla', 'çilek'] # ✗ Türk alfabesinde ç, d'den önce gelir
>>> f"Kullanıcı {sehir}'de oturuyor"
"Kullanıcı İstanbul'de oturuyor" # ✗ "İstanbul'da" olmalıydıUnicode'un varsayılan kuralları Türkçe'nin dört harfli i ailesini (i-İ, ı-I) bilmez; sorted() kod noktasına göre sıralar; şablonlardaki sabit ekler ünlü uyumunu kırar. trtext dördünü de düzeltir.
pip install trtextimport trtext
# Doğru casing
trtext.upper("istanbul") # 'İSTANBUL'
trtext.lower("DİYARBAKIR") # 'diyarbakır'
trtext.capitalize("ışıl") # 'Işıl'
# Slug
trtext.slugify("İç Anadolu'da 5. Gün!") # 'ic-anadoluda-5-gun'
trtext.asciify("Çağrı ÖZTÜRK") # 'Cagri OZTURK'
# Türk alfabesiyle sıralama
trtext.tr_sorted(["damla", "çilek", "cam"]) # ['cam', 'çilek', 'damla']
sorted(isimler, key=trtext.sort_key) # kendi sorted()'ınızla
# Ad-soyad normalizasyonu ve unvan tespiti
trtext.normalize_name("mehmet ALİ öztürk") # 'Mehmet Ali Öztürk'
p = trtext.parse_name("Sayın Prof. Dr. Ayşe Kaya")
p.honorifics # ['Sayın', 'Prof. Dr.']
p.full_name # 'Ayşe Kaya'
trtext.parse_name("Mehmet Öztürk Bey").gender_hint # 'erkek'
trtext.make_salutation("ayşe yılmaz hanım") # 'Ayşe Hanım'
# Ünlü uyumlu ek üretimi — şablonların kurtarıcısı
trtext.locative("İstanbul") # "İstanbul'da"
trtext.locative("Zonguldak") # "Zonguldak'ta" (ünsüz sertleşmesi)
trtext.dative("Ankara") # "Ankara'ya" (kaynaştırma y)
trtext.genitive("Ayşe") # "Ayşe'nin"
trtext.accusative("Ömür") # "Ömür'ü"
trtext.ablative("Kars") # "Kars'tan"
trtext.conjunction("Kaan") # "Kaan da" (ayrı yazılan de/da)
trtext.dative("TDK") # "TDK'ye" (kısaltma harf okunuşu)
# Ekler apostrophe=False ile zincirlenebilir
trtext.locative(trtext.plural("araba"), apostrophe=False) # "arabalarda"
f"Kullanıcı {trtext.locative(sehir)} oturuyor"
# "Kullanıcı İstanbul'da oturuyor" ✓Ek seçimi son ünlü + son ünsüz analiziyle yapılır; özel isimler (kişi, şehir, kurum) için tasarlanmıştır ve kesme işaretiyle yazılır (apostrophe=False ile kapatılabilir). Ünlüsüz büyük harfli kısaltmalar son harfin okunuşuyla ek alır ("TDK'ye", "THY'de"); ünlü içerenler kelime gibi okunur ("NATO'ya", "ODTÜ'ye") — "AB" gibi harf harf okunan ünlülü kısaltmalar yanlış ek alabilir. Bilinen diğer sınırlar: yumuşama uygulanmaz ("kitap→kitabı" değil — özel adlarda zaten istenmez: "Zeynep'i"), sayı okunuşları desteklenmez ("1996'da" için manuel), ince okunuşlu istisnalar küçük bir sözlükle karşılanır (saat, harf, gol, alkol, petrol, kontrol) — eksik gördüğünüz istisna için issue açın.
CRM/form verisi temizliği (isim normalizasyonu), e-posta ve bildirim şablonları (hitap + ek üretimi), URL/SEO slug'ları, raporlarda alfabetik listeler, arama indekslerinde Türkçe-duyarsız eşleştirme (asciify + lower).
- Sayı okunuşuyla ek ("1996'da", "%5'e")
-
ilekaynaşması ("Kaan'la", "Ömür'le") - Deasciify (asci metni Türkçe karakterlere geri çevirme)
- npm/TypeScript portu
MIT
trtext fixes the notorious Turkish-locale text bugs in one zero-dependency package. Python's default upper()/lower() mishandle Turkish's four-way i family (i↔İ, ı↔I) and leave combining-dot residue; default sorted() ignores the Turkish alphabet; template strings with fixed suffixes violate vowel harmony.
Features: correct Turkish casing, ASCII folding and slug generation, Turkish collation (sort_key for use with sorted()), person-name normalization with honorific detection (parse_name("Sayın Prof. Dr. Ayşe Kaya")) and salutation building, and vowel-harmony suffix generation — locative("İstanbul") → "İstanbul'da", with consonant hardening ("Zonguldak'ta") and buffer consonants ("Ankara'ya"), which makes grammatically correct Turkish templates possible:
f"User lives {trtext.locative(city)}" # correct suffix for any cityLicense: MIT