WCAG 3.1.1 · A Seviyesi
Varsayılan İçerik Dili
Her sayfanın veya uygulamanın varsayılan dilinin kodda tanımlanmasını, böylece ekran okuyucuların metni doğru dilde ve doğru telaffuzla seslendirmesini ister.
Kısaca
Ekran okuyucular metni seslendirirken hangi dilin kurallarını kullanacaklarını sayfanın dil tanımından öğrenir. Dil tanımı yoksa veya yanlışsa, Türkçe bir metin İngilizce telaffuz kurallarıyla okunur ve "Başvuru" kelimesi tanınmaz bir sese dönüşür.
Bu kriter, her sayfanın ya da uygulamanın varsayılan dilinin kodda tanımlanmasını ister. Web'de bu, html öğesine doğru lang değerini eklemek kadar basittir.
Neleri kapsar?
- Web sayfası dili:
htmlöğesindekilangözniteliği. - Geçerli dil kodu: Türkçe için
tr(veyatr-TR) gibi standart BCP 47 kodları. - Çok dilli siteler: Her dil sürümünün kendi dil koduyla işaretlenmesi.
- Mobil uygulamalar: Uygulamanın geliştirme dili ve yerelleştirme ayarlarının içeriğin diliyle uyumu.
- Kapsam dışı notlar: Sayfa içinde başka dildeki tek tek ifadelerin işaretlenmesi AA düzeyindeki ayrı bir kriterin konusudur ve A Seviyesi listesinde yer almaz; yine de iyi bir uygulamadır.
Kimleri etkiler?
Ekran okuyucu kullanan kör ve az gören kullanıcılar en çok etkilenen gruptur; yanlış dil, metni anlaşılmaz hâle getirir. Metni sesli okuyan yazılımlar kullanan disleksili ve öğrenme güçlüğü olan kişiler de doğru telaffuza ihtiyaç duyar. Dil tanımı ayrıca tarayıcıların çeviri önerileri, heceleme ve büyük-küçük harf dönüşümü gibi davranışlarını da etkiler.
Kontrol listesinde
Bu kriter, Bakanlığın A Seviyesi Kontrol Listesi'nde 104 numaralı soruyu kapsar. Yönlendirme soruları sayfada ilgili içerik olup olmadığını belirler; yoksa liste sizi sonraki soruya geçirir. Aşağıdaki açıklamalar sorulardan alıntı değil, özetidir. Soruların tam metni için resmî listeye bakın.
| Soru | Türü | Ne kontrol eder? |
|---|---|---|
| 104 | ★ Zorunlu | Sayfanın veya uygulamanın varsayılan dilinin kodda (web'de lang ile, mobilde platform ayarlarıyla) tanımlanıp tanımlanmadığını kontrol eder. Bu kriterde yönlendirme sorusu yoktur; her sayfa için geçerlidir. |
Resmî kontrol listesini indirin (PDF), yeni sekmede açılır
Web için kod örnekleri
1. Eksik dil tanımı
<!DOCTYPE html>
<html>
<head><title>e-Başvuru</title></head>
…<!DOCTYPE html>
<html lang="tr">
<head><title>e-Başvuru</title></head>
…2. Şablondan kalan yanlış dil
Hazır temalar ve çerçeveler çoğu zaman lang="en" ile gelir. Türkçe içerikte bu değer ekran okuyucunun İngilizce sesle okumasına neden olur.
<html lang="en">
…
<h1>Engelli Bireyler İçin Ulaşım Kartı Başvurusu</h1><html lang="tr">
…
<h1>Engelli Bireyler İçin Ulaşım Kartı Başvurusu</h1>3. Geçersiz dil kodu
Dil kodları standarttır; ülke kodu veya serbest metin kullanılmamalıdır.
<html lang="turkce">
<html lang="TR_tr"><html lang="tr">
<!-- veya bölge belirtmek gerekirse -->
<html lang="tr-TR">4. Tek sayfa uygulamada dil değişimi
Dil seçici sayfayı yenilemeden içeriği değiştiriyorsa lang değeri de güncellenmelidir.
function diliDegistir(dil) {
icerigiYukle(dil); // Kendi fonksiyonunuz
document.documentElement.lang = dil; // "tr", "en", "ar" …
document.documentElement.dir = dil === "ar" ? "rtl" : "ltr";
}5. Türkçeye özgü bir yan etki: büyük harf dönüşümü
Dil tanımı yalnızca ekran okuyucuyu değil, tarayıcının metin dönüşümlerini de etkiler. lang doğru değilse CSS ile büyük harfe çevrilen "i" harfi "İ" yerine "I" olarak görünür.
<html lang="tr">
…
<style>
.menu-baslik { text-transform: uppercase; }
</style>
<span class="menu-baslik">iletişim</span>
<!-- lang="tr" ile: İLETİŞİM, lang="en" ile: ILETIŞIM -->Başka dildeki bir ifadeyi ayrıca işaretlemek (örneğin <span lang="en">) bu kriterin zorunluluğu değildir, ama Kaynaklar bölümündeki İngilizce bağlantıda olduğu gibi iyi bir uygulamadır.
Mobil için kod örnekleri
Mobil uygulamalarda ekran okuyucu genellikle uygulamanın etkin dilini ve cihaz dilini kullanır. Uygulamanın geliştirme dili ve yerelleştirme dosyaları içeriğin diliyle uyumlu olmalıdır.
iOS (SwiftUI)
Uygulamanın geliştirme dili Info.plist'te tanımlanır; Türkçe metinler tr.lproj altındaki yerelleştirme dosyalarında veya String Catalog'da bulunur.
<!-- Info.plist -->
<key>CFBundleDevelopmentRegion</key>
<string>tr</string>
<key>CFBundleLocalizations</key>
<array>
<string>tr</string>
<string>en</string>
</array>import SwiftUI
struct KarsilamaEkrani: View {
var body: some View {
// "karsilama.baslik" anahtarı tr.lproj/Localizable.strings
// veya String Catalog içinde Türkçe karşılığıyla tanımlıdır.
Text("karsilama.baslik")
.font(.title)
.accessibilityAddTraits(.isHeader)
}
}Android (Jetpack Compose)
Varsayılan dil Türkçe ise metinler res/values/strings.xml içinde Türkçe tutulur. Uygulama içi dil seçimi sunuluyorsa Android 13 ve sonrasında desteklenen diller locales_config.xml ile bildirilir.
<!-- res/xml/locales_config.xml -->
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="tr"/>
<locale android:name="en"/>
</locale-config>
<!-- AndroidManifest.xml -->
<application
android:localeConfig="@xml/locales_config"
… >import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
@Composable
fun KarsilamaBasligi() {
// R.string.karsilama_baslik → res/values/strings.xml (Türkçe)
Text(stringResource(R.string.karsilama_baslik))
}Nasıl test edilir?
- Kaynağı inceleyin: Sayfa kaynağında
htmlöğesininlangdeğerini kontrol edin; içeriğin diliyle aynı mı? - Ekran okuyucuyla dinleyin: Sayfayı ekran okuyucuyla açın. Metin Türkçe telaffuzla mı okunuyor?
- Farklı şablonları kontrol edin: Ana sayfa, hata sayfaları, açılır pencereler ve PDF önizleme sayfaları gibi farklı şablonlarda da dil tanımı doğru mu?
- Mobilde cihaz dilini değiştirin: Cihaz dili İngilizceyken Türkçe içerik sunan bir uygulamada ekran okuyucu doğru dili kullanıyor mu?
- Otomatik araçların sınırı: Otomatik araçlar eksik veya geçersiz
langdeğerlerini güvenilir biçimde bulur. Ancak dil kodunun içeriğin gerçek diliyle eşleşip eşleşmediğini (örneğin Türkçe sayfadalang="en") her zaman fark edemez; bunu elle kontrol edin.
Sık yapılan hatalar
- Temadan gelen lang="en": Türkçe sitelerde en sık görülen sorundur.
- Dil seçicinin lang değerini güncellememesi: İngilizce sürüme geçildiğinde
langdeğerinin "tr" kalması veya tersi. - Sayfa parçalarında farklı dil: Sonradan yüklenen bileşenlerin (çerez bandı, sohbet penceresi) kendi
langdeğerini taşıyıp ana dille çelişmesi. - Hata ve bakım sayfaları: Sunucu tarafından üretilen 404 veya bakım sayfalarında dil tanımının unutulması.
Kaynaklar
- Understanding SC 3.1.1: Language of Page (W3C), İngilizce, yeni sekmede açılır
- Erişilebilirlik blogu — Uygulamadan örnekler ve güncel yazılar.
- Erişilebilirlik kütüphanesi — Sayfa dili, lang özniteliği, ekran okuyucu ve diğer terimler.
Sitenizde bu kriter nasıl görünüyor?
Ücretsiz tarama, bu kriterdeki sorunları ve diğerlerini Bakanlığın A Seviyesi Kontrol Listesi esas alınarak listeler.
Sıradaki kriterler
Zaman Kontrolü
Süre sınırı olan işlemlerde kullanıcının süreyi kapatabilmesini, en az on katına kadar uzatabilmesini ya da süre dolmadan uyarılıp basit bir işlemle süre ekleyebilmesini ister.
Kriteri inceleAltyazılar (Önceden Kaydedilmiş)
Önceden kaydedilmiş ve hem ses hem görüntü içeren medyada, konuşmaların ve anlam taşıyan seslerin senkronize altyazılarla sunulmasını ister.
Kriteri inceleAnlamlı Sıralama
Okunma sırası anlamı etkileyen içeriğin, yardımcı teknolojilerin izlediği programatik sırada da doğru ve mantıklı bir düzende sunulmasını ister.
Kriteri incele