Locale (Yerel Ayar) Nedir?
Kısa tanım
Locale (yerel ayar), bir yazılımın kullanıcıya hangi dil ve bölge kurallarıyla hizmet vereceğini tanımlayan tanımlayıcıdır. Web'de genellikle tr-TR veya en-US gibi BCP 47 dil etiketleriyle ifade edilir. Locale; arayüz metinlerinin dilini, tarih, saat, sayı ve para birimi biçimlerini, alfabetik sıralamayı ve büyük-küçük harf dönüşümlerini belirler.
Diğer adları: yerel ayar, dil etiketi, BCP 47, locale kodu, language tag

Bir dil etiketinin parçaları
Web standartları locale'i BCP 47 dil etiketleriyle (RFC 5646) ifade eder. Etiket tirelerle ayrılan alt parçalardan oluşur: önce dil, isteğe bağlı olarak yazı sistemi, ardından bölge.
| Etiket | Anlamı |
|---|---|
tr | Türkçe, bölge belirtilmemiş |
tr-TR | Türkiye'de kullanılan Türkçe |
en-GB | Birleşik Krallık İngilizcesi |
zh-Hant-TW | Geleneksel yazıyla Çince, Tayvan |
es-419 | Latin Amerika İspanyolcası (UN M.49 bölge kodu) |
Dil kodu küçük, yazı sistemi baş harfi büyük (ISO 15924), bölge kodu büyük harfle (ISO 3166-1) yazılır. Bu bir gelenektir; standart etiketleri büyük-küçük harfe duyarsız kabul eder. Ayırıcı her zaman tiredir. İşletim sistemlerinde ve bazı sunucu dillerinde görülen tr_TR.UTF-8 biçimi POSIX yazımıdır; HTML, HTTP ve JavaScript'te karşılığı tr-TR'dir.
Aynı veri, farklı locale
Locale'in en görünür etkisi biçimlendirmedir. JavaScript'in yerleşik Intl API'si bu kuralları tarayıcıya ya da Node.js'e bırakır:
new Intl.NumberFormat("tr-TR").format(1234567.5); // "1.234.567,5"
new Intl.NumberFormat("en-US").format(1234567.5); // "1,234,567.5"
new Intl.NumberFormat("tr-TR", { style: "currency", currency: "TRY" })
.format(1499.9); // "₺1.499,90"
const d = new Date("2026-10-03T12:00:00Z");
new Intl.DateTimeFormat("tr-TR", { dateStyle: "long" }).format(d); // "3 Ekim 2026"
new Intl.DateTimeFormat("en-GB", { dateStyle: "short" }).format(d); // "03/10/2026"
new Intl.DateTimeFormat("en-US", { dateStyle: "short" }).format(d); // "10/3/26"Türkçe, locale'e duyarlı kodun neden önemli olduğunu gösteren klasik örneği de sunar: "istanbul".toUpperCase() sonucu "ISTANBUL" olur, "istanbul".toLocaleUpperCase("tr-TR") ise doğru biçimde "İSTANBUL" döndürür. Sıralamada da benzer bir fark vardır; varsayılan sıralama "ç" ve "ı" harflerini alfabenin sonuna atarken Intl.Collator("tr") Türk alfabesine uyar. Pratik kural basittir: Kullanıcıya gösterilen metinde locale'e duyarlı işlevler, URL slug'ı ve veritabanı anahtarı gibi teknik tanımlayıcılarda ise locale'den bağımsız dönüşümler kullanılır.
Tarayıcı tercihini nasıl bildirir?
Tarayıcı her istekte Accept-Language HTTP başlığını gönderir; değerler öncelik sırasına ve ağırlığa (q) göre dizilir:
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7Bu başlık bir ipucudur, kesin bir tercih değildir. MDN, sunucuların kullanıcının açık seçimini başlıkla ezmemesi ve sayfada bir dil seçici sunması gerektiğini vurgular; gizlilik nedeniyle bazı tarayıcılar listede yalnızca tek dil gönderir. Kullanıcının seçimi yalnızca bir çerezde tutulursa paylaşılan bağlantılar ve botlar için bu seçim kaybolur; locale'i URL'de taşımak bu yüzden daha sağlamdır. Locale ayrıca saat dilimi ve para birimiyle aynı şey değildir: Berlin'de yaşayan bir kullanıcı tr-TR biçimlerini tercih ederken saatini Avrupa/Berlin'e, fiyatını avroya göre görmek isteyebilir.
Locale ve SEO: hreflang kodlarıyla ilişkisi
Hreflang değerleri BCP 47 etiketlerinin daraltılmış bir alt kümesidir. Google; ISO 639-1 dil kodunu, isteğe bağlı ISO 3166-1 Alpha 2 bölge kodunu ve gerektiğinde ISO 15924 yazı sistemi kodunu kabul eder. Yalnızca ülke kodu yazmak geçersizdir; en-UK de hatalıdır, doğrusu en-GB'dir. es-419 gibi sayısal bölge kodları ise geçerli BCP 47 etiketleri olsa da Google'ın hreflang için tanımladığı biçime girmez. Sayfanın <html lang="tr"> özelliği de BCP 47 etiketi alır ve ekran okuyucuların metni doğru dilde seslendirmesi için gereklidir; ancak Google sayfanın dilini lang özelliğine ya da hreflang'e bakarak değil, kendi algoritmalarıyla belirler.
Locale'e göre içerik değiştiren tek bir URL (locale-adaptive sayfa) arama motorları için risklidir. Google'a göre Googlebot isteklerinde Accept-Language başlığı göndermez ve varsayılan IP adresleri ABD kaynaklı görünür; bu durumda yalnızca tek bir sürüm görülebilir. Google'ın önerisi, her locale için ayrı bir URL kullanmak ve bunları hreflang ile birbirine bağlamaktır. Bu kararın uluslararası SEO yapısına etkisi büyüktür. Ayrıntılar Google'ın locale'e uyarlanan sayfalar belgesinde yer alır.

