Temeller
Biçim ve yerelleştirme
Türkçe kaynak dildir, İngilizce çeviridir. Tutar, tarih, sayı ve liste her dilde tarayıcının Intl arayüzüyle biçimlenir; elle birleştirilmiş metin ve elle yazılmış biçim yoktur.
Diller
Bölüm başlığı “Diller”- Arayüz iki dillidir: Türkçe (
tr) ve İngilizce (en). Türkçe kaynak dildir; İngilizce metin Türkçeden çevrilir (D-08). - İngilizce biçimler
en-GByereline sabitlenir. Çıplakendeğeri Intl’e hiçbir zaman verilmez (I18N-15). - Dil seçimi şu sırayla belirlenir: kaydedilmiş tercih, tarayıcının dil başlığı, Türkçe. Dil değişince sayfa yeniden yüklenmez; rota ve form durumu korunur.
<html lang>etkin dili gösterir. Başka dilde bir parça varsa kendilangdeğerini taşır (I18N-14).- Sağdan sola yazım bu aşamanın kapsamında değildir (I18N-24). Yine de mantıksal CSS özellikleri (
margin-inline-start,text-align: start) kullanın.
Mesajlar
Bölüm başlığı “Mesajlar”- Arayüzdeki her metin bir mesaj kimliğinden gelir; JSX içinde çıplak metin yoktur.
aria-label,altveplaceholderda buna dahildir (I18N-06). - Tasarım sisteminin kendi metinleri
ui.*katalogundadır: örneğin Button’ın yükleniyor metni. Uygulama metinleriekran.bölüm.öğe.amaçbiçiminde dört parçalı kimlik alır (I18N-02). - Cümleyi parçalardan birleştirmeyin. Değişkenli tam cümle yazın:
{count, plural, one {# dosya seçildi} other {# dosya seçildi}}(I18N-07). - Türkçede çoğul kategorileri
oneveother’dır. Türkçede sayıdan sonra isim tekil kalır: “3 dosya”. - Her mesajın bir açıklaması vardır: hangi ekranda, değişkenler ne, en fazla kaç karakter (I18N-03).
- Yasal metin mesaj katalogunda tutulmaz ve makine çevirisi yapılmaz; sürümlü belge olarak yayımlanır (D-08).
Biçim örnekleri
Bölüm başlığı “Biçim örnekleri”Aşağıdaki değerler bu sayfa derlenirken Intl ile üretilmiştir; çalışma anında aynı çıktı alınır.
| Durum | Türkçe (tr-TR) | İngilizce (en-GB) | API |
|---|---|---|---|
| Tutar | ₺1.234.567,89 | ₺1,234,567.89 | style: 'currency', currencyDisplay: 'narrowSymbol' |
| Eksi tutar | -₺1.234,50 | -₺1,234.50 | style: 'currency', currencyDisplay: 'narrowSymbol' |
| Sıfır tutar | ₺0,00 | ₺0.00 | style: 'currency', currencyDisplay: 'narrowSymbol' |
| Yüzde | %12,3 | 12.3% | style: 'percent' |
| Sayı | 48.210,5 | 48,210.5 | Intl.NumberFormat |
| Kısa tarih | 25.10.2026 | 25/10/2026 | dateStyle: 'short' |
| Uzun tarih ve saat | 25 Ekim 2026 00:30 | 25 October 2026 at 00:30 | dateStyle: 'long', timeStyle: 'short' |
| Göreli zaman | 3 gün önce | 3 days ago | Intl.RelativeTimeFormat |
| Dün | dün | yesterday | numeric: 'auto' |
| Liste | rapor, tablo ve grafik | report, table and chart | Intl.ListFormat |
| Büyük harf | İSTANBUL IŞIK | ISTANBUL | toLocaleUpperCase(locale) |
| Sıralama | Ağaç, Ankara, Cam, Çilek, Şeker, Ürün, Zeytin | Ağaç, Ankara, Cam, Çilek, Şeker, Ürün, Zeytin | Intl.Collator(locale) |
- Tutarlar tek bir
<Money>bileşeniyle gösterilir; iki dilde denarrowSymbolkullanılır: ₺ simgesi, “TRY” değil (I18N-10). - Türk lirası tutarı her zaman iki ondalık basamakla gösterilir: “₺1.250,00”. Kuruşu sıfır olan tutarın ondalığı atılmaz.
- Eksi işareti simgenin önüne gelir: “-₺1.234,50”. Yön (gelen, giden) yalnızca renkle değil, işaretle ya da metinle de verilir.
- Tutarlar kısaltılmaz (“1,2 Mn” yok); sığmazsa alt satıra geçer. Kısaltma yalnızca grafik eksenlerinde kullanılır ve tam değer ipucunda görünür.
- Ön yüz ücret ya da toplam hesaplamaz; tutarlar sunucudan hesaplanmış gelir. Eksik bir değer “₺0,00” olarak gösterilmez, hata olarak ele alınır.
- Tutar sütunları sağa hizalanır ve eşit genişlikli rakam kullanır (
font-variant-numeric: tabular-nums). Bkz. Tipografi.
Sayı ve yüzde
Bölüm başlığı “Sayı ve yüzde”- Sayılar
Intl.NumberFormatile biçimlenir. Türkçede binlik ayracı nokta, ondalık ayracı virgüldür; İngilizcede tersi. - Yüzde işareti Türkçede sayının önüne gelir: “%12,3”. İngilizcede sonra gelir: “12.3%” (I18N-11).
- Kimlik ve referans gibi uzun numaralar okunması için dörtlü gruplar halinde gösterilir; kopyalandığında boşluksuz kopyalanır.
Tarih ve saat
Bölüm başlığı “Tarih ve saat”- Her tarih çağrısı
timeZone: 'Europe/Istanbul'taşır; kullanıcının cihaz saat dilimi kullanılmaz (I18N-12). - Saat iki dilde de 24 saat biçimindedir.
- Kayıt, makbuz ve denetim zamanları her zaman mutlak gösterilir. “3 gün önce” gibi göreli zaman yalnızca bildirim ve etkinlik akışlarında kullanılır.
- Tarih seçicide kapalı günler yalnızca renkle değil, metinle de açıklanır.
- Sunucuyla değişen tarihler ISO 8601 biçiminde ve saat dilimiyle taşınır.
Büyük harf ve sıralama
Bölüm başlığı “Büyük harf ve sıralama”- Büyük harfe çevirme
toLocaleUpperCase(locale)ile yapılır;toUpperCase()Türkçe “i” harfini yanlış çevirir (I18N-09). - Listeler
Intl.Collator(locale)ile sıralanır. Varsayılan.sort()Ç, Ğ, İ, Ö, Ş, Ü harflerini Z’den sonraya atar (I18N-13). - Aramada büyük ve küçük harf eşleştirmesi Türkçe kurallarla yapılır: “istanbul” araması “İstanbul” sonucunu bulur.
Metin uzunluğu
Bölüm başlığı “Metin uzunluğu”- Arayüzü metnin %40 uzayabileceği düşünülerek kurun. Storybook’taki sözde yerel ayar metni %40 uzatır ve köşeli parantez içine alır; kırılan düzen burada görünür (I18N-16, I18N-35).
- Etiketlere sabit genişlik ve
white-space: nowrapvermeyin. - Kısaltma yalnızca tasarım sisteminin
Truncatebileşeniyle yapılır; tam metin erişilebilir adda ve ipucunda kalır. Tutar, referans, tarih, yasal metin ve hata metni kısaltılmaz.
Yazı tipi ve karakterler
Bölüm başlığı “Yazı tipi ve karakterler”Markanın yazı tipi Ç Ğ İ ı Ö Ş Ü harflerini ve ₺ simgesini kapsamak zorundadır (I18N-23). Yeni bir marka yazı tipi eklendiğinde bu karakterler derleme sırasında denetlenir.
Yönergeler
Bölüm başlığı “Yönergeler”Cümleyi parçalardan kurmayın
Bölüm başlığı “Cümleyi parçalardan kurmayın”{count, plural, other {# dosya seçildi}}count + " " + t("file") + " " + t("selected")Biçimi Intl’e bırakın
Bölüm başlığı “Biçimi Intl’e bırakın”new Intl.NumberFormat(locale, options)value.toFixed(2).replace('.', ',')