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 öğesindeki lang özniteliği.
  • Geçerli dil kodu: Türkçe için tr (veya tr-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.

BK 24 kapsamındaki sorular
SoruTürüNe kontrol eder?
104★ ZorunluSayfanı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ı

Hatalı
<!DOCTYPE html>
<html>
  <head><title>e-Başvuru</title></head>
  …
Doğru
<!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.

Hatalı
<html lang="en">
  …
  <h1>Engelli Bireyler İçin Ulaşım Kartı Başvurusu</h1>
Doğru
<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.

Hatalı
<html lang="turkce">
<html lang="TR_tr">
Doğru
<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 öğesinin lang değ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 lang değ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 sayfada lang="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 lang değerinin "tr" kalması veya tersi.
  • Sayfa parçalarında farklı dil: Sonradan yüklenen bileşenlerin (çerez bandı, sohbet penceresi) kendi lang değ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

Kontrol listesi sürümü: V2.2.30.01 (2026). Bu sayfa bilgilendirme amaçlıdır; bağlayıcı metin için Aile ve Sosyal Hizmetler Bakanlığı'nın resmî kontrol listesini esas alın.

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.

Sitemi ücretsiz tara