Arapça Noktalama İşaretleri Doğru Kullanımı: Amal Tashkeel, Şedde ve Hamzayı Nasıl Yönetiyor?
Amal, Arapça noktalama işaretlerinin tam karmaşıklığını yönetir: 8 tashkeel işareti (fetha, damme, kesra, şedde, sukun, fehtatan, dammatan, kesratan), 4 elif çeşidi (standart, madda, hamza üstte, hamza altta, vasla), 3 hamza çeşidi (yalnız, vav üstünde, ye üstünde) ve Lam-Alef birleşimleri. Uygulamanın konuşma tanıma, metin gösterimi ve benzerlik puanlama sistemleri noktalı Arapçayı ("كَتَبَ") noktasız Arapçadan ("كتب") ayrı değerlendirir — çoğu Arapça eğitim uygulamasının göz ardı ettiği hayati bir fark.
Noktaların Öğrenmede Önemi Nedir?
Belirsizlik Sorunu
Noktalar olmadan Arapça belirsizdir:
- "كتب" şunları ifade edebilir:
- "kataba" (o yazdı) — geçmiş zaman
- "kutub" (kitaplar) — çoğul isim
- "kutiba" (yazıldı) — edilgen yapı
Tüm bu kelimeler, noktalama olmadan aynı şekilde yazılır. Noktalar, belirsizliği ortadan kaldırır.
Öğrenme Süreci
- Başlangıç: Noktalı okumayı öğrenmek (kolay — sesli harfler işaretlidir)
- Orta Seviye: Noktalı okumada otomatikleşene kadar pratik yapmak
- İleri: Noktaları yavaş yavaş kaldırarak okuma zorlaşır
- Akıcı: Noktasız okuma akıcılığı (ana dil seviyesinde)
Çoğu Arapça öğrenme uygulaması, 1. aşamayı atlar — ya noktaları hiç öğretmez ya da kaldırır. Bu yanlış alışkanlıklar kazandırır. Amal'ın öğrenme süreci bilimsel olarak doğrudur.
Unicode Seviyesinde Uygulamamız
Noktalama İşaretleri (Toplam 8)
// lib/src/utils/arabic_extension.dart
class ArabicExtension {
static const Map<String, String> tashkeelMarks = {
'FATHA': '\u064E', // َ (sesli a)
'DAMMA': '\u064F', // ُ (sesli u)
'KASRA': '\u0650', // ِ (sesli i)
'SUKUN': '\u0652', // ْ (sessiz)
'SHADDA': '\u0651', // ّ (harf çiftlemesi)
'FATHATAN': '\u064B', // ً (tenvin an)
'DAMMATAN': '\u064C', // ٌ (tenvin un)
'KASRATAN': '\u064D', // ٍ (tenvin in)
};
static const Map<String, String> alefVariants = {
'ALEF_STANDARD': 'ا', // ا
'ALEF_WITH_MADDA': 'آ', // آ (uzunlaştırılmış)
'ALEF_WITH_HAMZA_ABOVE': 'أ', // أ
'ALEF_WITH_HAMZA_BELOW': 'إ', // إ
'ALEF_WASLA': 'ٰ', // ٰ (bağlayıcı elif)
};
static const Map<String, String> hamzaVariants = {
'HAMZA_ISOLATED': 'ء', // Yalnız hamza
'HAMZA_ON_WAW': 'ؤ', // Vav üstünde hamza
'HAMZA_ON_YEH': 'ئ', // Yeh üstünde hamza
};
}
Kuran Noktalama ve Uthmani Duruş İşaretleri
Thurayya için Kuran'a özgü işaretleri destekliyoruz:
static const Map<String, String> quranicMarks = {
'STOP_FULL': 'ۖ', // Tam durak
'STOP_HALF': 'ۗ', // Yarım durak
'STOP_QUA': 'ۙ', // Qua durak
'STOP_NECESSARY': 'ۚ', // Gerekli durak
'TAJWEED_ELONGATION': '', // Uzatma göstergesi
};
Noktalı Konuşma Tanıma
Noktalı Bağlam ile Ses Tanıma
Çocuk "كَتَبَ" (o yazdı, geçmiş zaman) öğrenirken, konuşma tanımayı tam olarak bu telaffuza yönlendiriyoruz:
# src/services/stt_client.py
def recognize_with_diacritical_context(audio_bytes, expected_text):
# expected_text = "كَتَبَ" (noktalı)
speech_context = {
'phrases': [expected_text],
'boost': 20.0 # Beklenen metin için yüksek önyükleme
}
response = google_stt_client.recognize(
audio=audio_bytes,
language_code='ar-SA',
speech_contexts=[speech_context]
)
return response
Noktalı Bilinçli Benzerlik Puanlaması
Benzerliği hesaplama, noktalı ve noktasız farklılığı gözetir:
def compare_pronunciations(expected, actual):
"""
expected: "كَتَبَ" (noktalı)
actual: "كتب" (çocuğun denemesi, muhtemelen noktasız)
"""
expected_base = strip_diacritics(expected) # "كتب"
actual_base = strip_diacritics(actual) # "كتب"
base_similarity = string_similarity(expected_base, actual_base) # 1.0 (mükemmel)
diacritic_bonus = 0.0
if has_diacritics(actual):
diacritic_accuracy = diacritics_match_ratio(expected, actual)
diacritic_bonus = diacritic_accuracy * 0.15 # Doğru noktalarda +%15'e kadar
final_score = min(base_similarity + diacritic_bonus, 1.0)
return {
'base_score': base_similarity,
'diacritic_bonus': diacritic_bonus,
'final_score': final_score,
'feedback': 'Harika! Telaffuz mükemmel. Şimdi noktalama işaretlerini pratik et.'
}
Bu şu anlama gelir:
- Çocuk "كتب" (noktasız) derse → %85-90 puan (temel doğru, noktalar eksik)
- Çocuk "كَتَبَ" (tam noktalı) derse → %98+ puan (mükemmel)
Sağdan Sola (RTL) Metin Gösterimi Zorlukları
Metin Yönü Yönetimi
// lib/src/screens/lesson_screen.dart
Column(
children: [
Directionality(
textDirection: TextDirection.rtl, // Arapça metin için
child: Text(
'كَتَبَ',
textAlign: TextAlign.right, // Sağ hizalama
style: TextStyle(
fontFamily: 'IBMPlexSansArabic',
fontSize: 36,
height: 1.8, // Noktalar için ekstra satır yüksekliği
),
),
),
Directionality(
textDirection: TextDirection.ltr, // İngilizce için
child: Text(
'Pronounce: "he wrote"',
textAlign: TextAlign.left, // Sol hizalama
),
),
],
)
Bağlı Harf Şekil Değiştirmeleri
Arap harfleri pozisyona göre şekil değiştirir:
- Yalıtılmış: "ك" (Kaf)
- Başlangıç: "كَـــ" (kelime başında Kaf)
- Orta: "ـــكَـــ" (kelime ortasında Kaf)
- Son: "ـــكَ" (kelime sonunda Kaf)
// Doğru: Unicode bağlayıcı karakterler kullanılır
String word = 'ك' + '\u0640' + 'ت' + '\u0640' + 'ب'; // Kashida (uzatma)
// Yanlış: Doğrudan birleştirme
String word = 'ك' + 'ت' + 'ب'; // Tüm cihazlarda doğru şekillenmeyebilir
İki Yönlü (Bidirectional) Metin Karışımı
İngilizce ve Arapça birlikte görünürse:
RichText(
textDirection: TextDirection.rtl, // Genel RTL
text: TextSpan(
children: [
TextSpan(text: 'means ', style: englishStyle), // LTR
TextSpan(text: 'كتاب', style: arabicStyle), // RTL
TextSpan(text: ' (book)', style: englishStyle), // LTR
],
),
)
Sonuç: "means كتاب (book)" doğru iki yönlü akışla gösterilir.
Sıkça Sorulan Sorular
S: Başlangıç seviyesindekilere neden noktalama zorunlu yapılıyor? Daha zor değil mi?
C: Başlangıçta evet zor olabilir. Ancak noktalı öğrenmek harf-ses bağını güçlendirir. Araştırmalar, noktalı öğrenmenin akıcılığı hızlandırdığını gösteriyor. Noktalar iyi öğrenildikten sonra noktasız okumaya geçmek doğal ilerlemedir.
S: Çocuğumun klavyesi noktalama yazmayı desteklemiyor, sorun olur mu?
C: Uygulama çocuklardan noktalama yazmasını istemez. Tanıma ve telaffuz konuşma aracılıdır. Yalnızca öğretmenler veya içerik üreticileri noktalama girer ve onlar özel Arapça klavyeler kullanır.
S: Amal standart dışı noktalama kombinasyonlarını destekliyor mu?
C: Tüm Unicode standart kombinasyonları desteklenir. Nadir ya da özel kombinasyonlar doğru gösterilmeyebilir ama standart Kuran ve modern Arapça tamamen desteklenmektedir.



