---
title: 'Arayüz Metni Rehberi'
source: 'https://academia.sh/tr/kurslar/erisilebilir-kaliplar/arayuz-metni-rehberi'
course: 'Erişilebilir Bileşen Kalıpları'
language: tr
updated: '2026-08-17T18:09:34+00:00'
license: 'CC BY-SA 4.0'
---

# Arayüz Metni Rehberi

Arayüz metni rehberinin denetlenebilir kurallara çevrilmesi; terim defteri, ton kuralları, sınıf başına uzunluk sınırı ve görünen metnin erişilebilir adın içinde bulunması ölçütü.

Önceki konudaki yedi kalıbın hepsinde son karar metne düştü. Bildirimin süresi metnin
kelime sayısından hesaplandı, hata iletisinin yeterliliği kurtarma yolunu yazıp yazmamasına
bağlandı, rozetin ikinci kanalı çoğu zaman tek bir sözcük oldu.

Mikro Metin dersi arayüz metnini bir **düzen kısıtı** olarak ölçmüştü: etiketin genişliği,
kırpmanın ürettiği çakışma, hata iletisinin satır sayısı. Bu ders aynı metni bir **sistem**
olarak ele alır. Sorusu şudur: bir arayüz metni rehberi, kişisel üslup tercihlerinin listesi
olmaktan çıkıp denetlenebilir kurallara nasıl çevrilir?

## Rehber Neyi Çözer, Ne Zaman İşe Yaramaz

Arayüz metni rehberi, aynı arayüzde çalışan farklı kişilerin aynı sözcükleri seçmesini
sağlar. Çözdüğü sorun tutarsızlıktır: bir ekranda "ödünç alma", ötekinde "emanet",
üçüncüsünde "çıkış" yazıldığında kullanıcı üç ayrı işlem olduğunu sanır.

Rehber üç durumda işe yaramaz:

- **Örnek yoksa.** "Kısa ve net yaz" bir kural değildir; sınanamaz.
- **Karşı örnek yoksa.** Neyin yanlış olduğu yazılmadığında kural yorum bırakır.
- **Denetlenmiyorsa.** Elle okunan bir rehber, kataloğun büyümesiyle uygulanmaz olur.

Bu üç eksik aynı çözüme işaret eder: kurallar **makine tarafından sınanabilir** biçimde
yazılmalıdır. Rehberin gövdesi düzyazı olabilir, ama her kuralın bir denetim karşılığı
bulunmalıdır.

## Dört Kural Ailesi

**Terim defteri.** Her kavram için bir sözcük seçilir, eşanlamlıları yasaklanır. Defter bir
sözlük değildir; bir **karar kaydıdır** ve nedeni de yazılır. "Kayıt" seçildiyse, "materyal"
ve "eser" yasaktır.

**Ton.** Üç kural yeter: eylem etiketleri kısa emir kipinde yazılır, sistem iletileri
kullanıcıyı suçlamaz, vurgu için büyük harf ve ünlem kullanılmaz. Suçlamama kuralının
gerekçesi nezaket değil doğruluktur — "yanlış girdiniz" ifadesi, alanın beklediği biçimi
söylemediği için kullanıcıya hiçbir bilgi vermez.

**Uzunluk.** Sınır metin sınıfına göre değişir: eylem etiketi en çok üç kelime, boş durum
başlığı altı, yardım metni on dört, ileti yirmi. Sayılar keyfîdir ve o arayüz için seçilir;
işlevleri denetlenebilir olmalarıdır.

**Görünen metin ile ad.** **2.5.3 Etikette Ad** ölçütü, görünen etiketin erişilebilir adın
içinde bulunmasını ister. Bu, bir yazım kuralı gibi görünmez ama doğrudan metin kararıdır:
ekranda "Filtreyi uygula" yazıp adı "Uygula" bırakmak ölçütü kaldırır.

## Rehberin Denetimi

Aşağıdaki betik on dört girdilik bir arayüz metni kataloğunu dört kural ailesiyle
denetliyor ve son bölümde her kavramın kaç ayrı sözcükle anıldığını sayıyor.

```js
// metin-denetimi.mjs — arayuz metni rehberinin dort kuralinin catalog uzerinde denetimi

// Arayuz metni katalogu: her girdinin sinifi, gorunen metni ve (denetimlerde) erisilebilir adi.
const KATALOG = [
  { anahtar: "dugme.odunc",        sinif: "eylem",   metin: "Ödünç al",                       ad: "Ödünç al" },
  { anahtar: "dugme.rezerve",      sinif: "eylem",   metin: "Rezerve et",                     ad: "Rezerve et" },
  { anahtar: "dugme.emanet",       sinif: "eylem",   metin: "Emanete çıkar",                  ad: "Emanete çıkar" },
  { anahtar: "dugme.suzgec",       sinif: "eylem",   metin: "Filtreyi uygula",                ad: "Uygula" },
  { anahtar: "dugme.temizle",      sinif: "eylem",   metin: "Süzgeçleri temizle",             ad: "Süzgeçleri temizle" },
  { anahtar: "dugme.disa",         sinif: "eylem",   metin: "Seçili kayıtları dışa aktar",    ad: "Seçili kayıtları dışa aktar" },
  { anahtar: "baslik.bos",         sinif: "baslik",  metin: "Süzgeçlere uyan kayıt yok",      ad: null },
  { anahtar: "baslik.ilk",         sinif: "baslik",  metin: "KATALOGDA ARAMA YAPIN",          ad: null },
  { anahtar: "hata.isbn",          sinif: "ileti",   metin: "ISBN yanlış girdiniz!",          ad: null },
  { anahtar: "hata.tarih",         sinif: "ileti",   metin: "İade tarihi bugünden sonra olmalı. Takvimden bir gün seçin.", ad: null },
  { anahtar: "yardim.uye",         sinif: "yardim",  metin: "Üye numaranız kartınızın arkasında, barkodun altında yazar; boşluksuz yazın.", ad: null },
  { anahtar: "yardim.materyal",    sinif: "yardim",  metin: "Materyal türünü seçerek sonuçları daraltabilirsiniz.", ad: null },
  { anahtar: "durum.sonuc",        sinif: "ileti",   metin: "128 kayıt listeleniyor",         ad: null },
  { anahtar: "dugme.kaldir",       sinif: "eylem",   metin: "Kaldır",                         ad: "Tür etiketini kaldır" },
];

// --- Kural 1: terim defteri --------------------------------------------------
// Her kavram icin tek bir sozcuk; otekiler kurs boyunca kullanilmaz.
const TERIM = {
  "ödünç alma": ["emanet", "kiralama", "çıkış yapma"],
  "kayıt":      ["materyal", "eser", "ürün"],
  "süzgeç":     ["filtre"],
  "üye":        ["müşteri", "abone"],
};

// --- Kural 2: ton ------------------------------------------------------------
const SUCLAYAN = ["yanlış girdiniz", "hatalı girdiniz", "unuttunuz", "yapmalısınız", "girmediniz"];
const KISALTMA = new Set(["ISBN", "QR"]);

// --- Kural 3: uzunluk --------------------------------------------------------
const SINIR = { eylem: 3, baslik: 6, ileti: 20, yardim: 14 };

const kelimeler = (m) => m.trim().split(/\s+/);
const kucuk = (m) => m.toLocaleLowerCase("tr");
// Turkce ekli dillerde alt dizgi aramasi yanlis eslesir ("turunu" icinde "urun" gecer):
// eslesme sozcuk basindan baslamali, sonu serbest kalmali.
const gecer = (metin, sozcuk) =>
  new RegExp(`(^|[^\\p{L}])${kucuk(sozcuk)}`, "u").test(kucuk(metin));

const bulgular = [];
for (const g of KATALOG) {
  // 1. terim
  for (const [dogru, yasak] of Object.entries(TERIM))
    for (const y of yasak)
      if (gecer(g.metin, y))
        bulgular.push({ anahtar: g.anahtar, kural: "terim", ayrinti: `"${y}" yerine "${dogru}"` });

  // 2. ton
  if (g.metin.includes("!"))
    bulgular.push({ anahtar: g.anahtar, kural: "ton", ayrinti: "ünlem" });
  for (const s of SUCLAYAN)
    if (gecer(g.metin, s))
      bulgular.push({ anahtar: g.anahtar, kural: "ton", ayrinti: `suçlayan kalıp: "${s}"` });
  for (const k of kelimeler(g.metin)) {
    const sade = k.replace(/[^\p{L}]/gu, "");
    if (sade.length >= 4 && sade === sade.toLocaleUpperCase("tr") && !KISALTMA.has(sade))
      bulgular.push({ anahtar: g.anahtar, kural: "ton", ayrinti: `büyük harfle yazım: "${sade}"` });
  }

  // 3. uzunluk
  const n = kelimeler(g.metin).length;
  if (n > SINIR[g.sinif])
    bulgular.push({ anahtar: g.anahtar, kural: "uzunluk", ayrinti: `${n} kelime, sınır ${SINIR[g.sinif]}` });

  // 4. 2.5.3 — gorunen metin adin icinde olmali
  if (g.ad !== null && !kucuk(g.ad).includes(kucuk(g.metin)))
    bulgular.push({ anahtar: g.anahtar, kural: "2.5.3", ayrinti: `görünen "${g.metin}", ad "${g.ad}"` });
}

console.log(`katalog: ${KATALOG.length} girdi, bulgu: ${bulgular.length}\n`);
console.log("anahtar             kural     ayrinti");
for (const b of bulgular)
  console.log(`${b.anahtar.padEnd(20)}${b.kural.padEnd(10)}${b.ayrinti}`);

const sayim = {};
for (const b of bulgular) sayim[b.kural] = (sayim[b.kural] ?? 0) + 1;
console.log("\nkural bazinda: " + Object.entries(sayim).map(([k, v]) => `${k}=${v}`).join(", "));

// --- Ayni kavramin kac ayri sozcukle anildigi -------------------------------
console.log("\nkavram        kullanilan sozcukler");
for (const [dogru, yasak] of Object.entries(TERIM)) {
  const gorulen = new Set();
  for (const g of KATALOG) {
    if (gecer(g.metin, dogru.split(" ")[0])) gorulen.add(dogru);
    for (const y of yasak) if (gecer(g.metin, y)) gorulen.add(y);
  }
  console.log(`${dogru.padEnd(14)}${gorulen.size ? [...gorulen].join(", ") : "—"}   (${gorulen.size} biçim)`);
}
```

```
katalog: 14 girdi, bulgu: 10

anahtar             kural     ayrinti
dugme.emanet        terim     "emanet" yerine "ödünç alma"
dugme.suzgec        terim     "filtre" yerine "süzgeç"
dugme.suzgec        2.5.3     görünen "Filtreyi uygula", ad "Uygula"
dugme.disa          uzunluk   4 kelime, sınır 3
baslik.ilk          ton       büyük harfle yazım: "KATALOGDA"
baslik.ilk          ton       büyük harfle yazım: "ARAMA"
baslik.ilk          ton       büyük harfle yazım: "YAPIN"
hata.isbn           ton       ünlem
hata.isbn           ton       suçlayan kalıp: "yanlış girdiniz"
yardim.materyal     terim     "materyal" yerine "kayıt"

kural bazinda: terim=3, 2.5.3=1, uzunluk=1, ton=5

kavram        kullanilan sozcukler
ödünç alma    ödünç alma, emanet   (2 biçim)
kayıt         kayıt, materyal   (2 biçim)
süzgeç        filtre, süzgeç   (2 biçim)
üye           üye   (1 biçim)
```

On dört girdilik küçük bir katalogda on bulgu çıkıyor. Bulgular dört ayrı türden ve her
biri farklı bir maliyet üretir.

**Terim kayması üç girdide görünüyor.** Son tablo bunun toplam etkisini veriyor: dört
kavramın üçü arayüzde iki ayrı sözcükle anılıyor. Kullanıcı için bu, üç kavramın altı
kavram gibi görünmesi demektir. Terim kayması aynı zamanda bir çeviri maliyetidir; her
eşanlamlı, çeviri kataloğunda ayrı bir anahtar ve ayrı bir karar üretir.

**Büyük harfle yazım üç bulgu üretiyor** ve tek bir başlıktan geliyor. Büyük harf yalnız
bir üslup kararı değildir: harflerin dış hatları benzeştiği için okuma yavaşlar, ve bazı
okuma araçları büyük harfli sözcükleri kısaltma sanıp harf harf okuyabilir. Vurgu, biçim
kararlarıyla verilir — ağırlık, boyut, konum.

**Suçlayan kalıp ve ünlem aynı girdide.** "ISBN yanlış girdiniz!" iletisi kullanıcıya neyin
yanlış olduğunu söylemez, ne yapacağını söylemez ve suçu ona yükler. Aynı kataloğun
`hata.tarih` girdisi karşı örnektir: "İade tarihi bugünden sonra olmalı. Takvimden bir gün
seçin." Kuralı ve çözümü birlikte verir, hiçbir denetime takılmaz.

**Uzunluk sınırı tek girdide aşılıyor.** "Seçili kayıtları dışa aktar" dört kelimedir ve
eylem sınırını aşar; Mikro Metin dersindeki genişlik hesabı bu sınırın nereden geldiğini
gösterir.

**2.5.3 bulgusu en sessiz kusurdur.** Ekranda "Filtreyi uygula" yazan düğmenin adı
"Uygula"; görsel olarak hiçbir sorun görünmez. Sesle denetim kullanan biri ekrandaki
sözcüğü söylediğinde düğme çağrılmaz. Denetimin bunu yakalaması, kuralın makine tarafından
sınanabilir yazılmasının doğrudan kazancıdır.

Betikteki `gecer` işlevi ayrıca Türkçeye özgü bir tuzağı çözüyor. Alt dizgi araması
"türünü" sözcüğü içinde "ürün" bulur ve yanlış bir bulgu üretir. Eklerin sona geldiği bir
dilde eşleşme **sözcük başından** aranır, sonu serbest bırakılır; böylece "materyal" ile
"materyalin" birlikte yakalanır, "türünü" yakalanmaz.

## Rehbere Girmesi Gereken Kararlar

Denetim, kuralı uygular ama kuralı seçmez. Rehberin düzyazı bölümünde şu kararlar
gerekçeleriyle yazılır.

**Kime seslenilir.** Arayüz metni kullanıcının diliyle yazılır, sistemin diliyle değil.
"Kayıt oluştur" veri tabanının işidir; "Kitap ekle" kullanıcının işidir.

**Kim özne olur.** Sistem iletilerinde özne sistemdir: "İstek gönderilemedi". Kullanıcının
eylemini anlatan yerlerde özne kullanıcıdır: "Ödünç aldığınız kayıtlar". Karışması,
sorumluluğun yanlış yere düşmesine yol açar.

**Sayı ve tarih nasıl yazılır.** Bu karar bir sonraki derslerin konusudur ve rehberde tek
bir satırla belirtilir: sayı ve tarih elle biçimlenmez.

**Kısaltma ne zaman kullanılır.** Kısaltma yalnız kullanıcı sözlüğünde bulunanlar için
serbesttir; arayüz içi kısaltmalar yasaktır.

## Sık Yapılan Hata ve Nasıl Anlaşılır

**Rehber var, denetim yok.** Anlaşılması: kataloğu yasaklı sözcük listesiyle taramak;
bulgu çıkıyorsa rehber uygulanmıyordur.

**Aynı anahtarın iki yerde farklı metni.** Anlaşılması: kavram başına kullanılan sözcük
sayısını çıkarmak; birden büyük her sayı bir karardır.

**Görünen metin adın içinde değil.** Anlaşılması: denetimin dördüncü kuralını
çalıştırmak; görsel incelemeyle yakalanamaz.

**Metin koda gömülü.** Denetlenecek bir katalog yoksa hiçbir kural uygulanamaz.
Anlaşılması: metnin koddan ayrılıp ayrılmadığına bakmak; Uygulama Mimarisi kursundaki
çeviri kataloğu kurulumu bu denetimin önkoşuludur.

## Özet

- Arayüz metni rehberi, ancak her kuralın makine tarafından sınanabilir bir karşılığı varsa
  uygulanır; örneksiz ve karşı örneksiz kurallar yorum bırakır.
- Dört kural ailesi yeterlidir: terim defteri, ton, sınıf başına uzunluk sınırı ve görünen
  metnin erişilebilir adın içinde bulunması.
- Terim kayması yalnız tutarsızlık değil, çeviri kataloğunda çoğalan anahtar demektir; on
  dört girdilik katalogda dört kavramın üçü iki ayrı sözcükle anılıyordu.
- Büyük harfle yazım ve ünlem vurgu aracı değildir; vurgu ağırlık, boyut ve konumla verilir.
- 2.5.3 ölçütü görsel incelemeyle yakalanamaz: ekranda görünen etiket erişilebilir adın
  içinde bulunmalıdır.
- Türkçe gibi ekli dillerde sözcük denetimi alt dizgi aramasıyla yapılmaz; eşleşme sözcük
  başından aranır, sonu serbest bırakılır.

## Sonraki Adım

Denetimin yakaladığı en ağır bulgu bir hata iletisiydi ve karşı örneği aynı katalogda
duruyordu. İki iletinin farkı üslup değil **yapı**dır: biri neyin yanlış olduğunu söyler,
öteki neyin doğru olduğunu ve nasıl yapılacağını. Sonraki ders hata iletisini kaynağına
göre sınıflandırır, her sınıf için hangi parçaların zorunlu olduğunu belirler ve iletileri
bu parçalara göre denetleyen bir kural kümesi kurar.
