Logo GH

RTL desteği

1) İlkeler

1. RTL bir metin çevirisi değil, bir düşünce yansımasıdır. Eksenler, okuma sırası, odak sırası, jestler ve navigasyon değişikliği.
2. Sol/sağ yerine mantıksal CSS özellikleri. 'Margin-inline-start', 'inset-inline-end', 'border-start-start-radius' vb. öğelerine gidin.
3. Küresel olarak yönü açın, yerel olarak LTR parçalarını izole edin. Numaralar, URL'ler, kodlar, e-posta ve IBAN her zaman soldan sağa doğru okunur.
4. Yöne bağlı olanı yansıtın, anlama değil. "Oynat", "↗", "↙'ve saat/işlem simgeleri yansıtmayabilir.
5. Pseudo-RTL'yi test edin. Çıkmadan önce'dir = 'rtl''/' direction: rtl've pseudo çevirileri ekleyin.

2) Yön: 'ir've boolean özellikleri

Belge/kök üzerinde küresel olarak:
html
<html lang="ar" dir="rtl"> … </html>
Boole özellikleri (sol/sağ değiştirme):
css
.card { padding-inline: 16px; margin-inline: 12px; }
.sidebar { inset-inline-start: 0; }
.button { border-start-start-radius: 12px; border-end-end-radius: 12px; }
Yön seçiciler:
css
:root:dir(rtl). breadcrumb { flex-direction: row-reverse; }
:root:dir(ltr). breadcrumb { flex-direction: row; }
Kullanıcı içeriğinin yerel otomatik odaklanması:
html
<p dir="auto">…</p>

3) BiDi ve karışık metin yalıtımı

Arapça/İbranice ile Latince/sayıları karıştırmak karakter sırasını bozar. BiDi izolasyonu kullan:
  • Etiketler: '' (yönü izole eder), ' '(forces override).
Unicode belirteçleri:
  • '\u2066 'LRI/'\u2067' RLI - LTR/RTL izolasyonunun başlangıcı,'\u2069 'PDI - sonu,
  • '\u200E 'LRM/'\u200F' RLM - kısa ekler için tek baytlık belirteçler.
Hesap numarası ve para birimi ile örnek cümle:
html
<span dir="rtl">
سحب <bdi dir="ltr">IBAN AE070331234567890123456</bdi> بمبلغ
<bdi dir="ltr">2,000. 00 UAH</bdi>
</span>

4) Navigasyon, hiyerarşi ve düzenler

Ekmek kırıntıları: ayna düzeni: "

Paneller/menüler: ana navbar - sağda; "Geri" sola (RTL çizgisinin başına) işaret eder.
Kartlar/listeler: başlıkları satır içi başlatmaya hizalayın; Durum simgeleri - satır içi sonuna.
Karuseller ve kaydırmalar: satır içi başlangıca doğru kaydırma (RTL'de - sağa). Sayfa göstergeleri de yansıtılır.
Sayfalama: "sonraki" ok satır içi başlangıç, "önceki" - satır içi sonuna gider.

5) Simgeler ve görüntüler

Ayna yönlü simgeler: oklar, "ileri/geri", oynatma kafası, "genişlet/daralt".
Yansıtmayın: metin simgeleri, grafikler, saatler (gerçek zamanlı bir ok varsa), marka logoları.

Teknik olarak:
css
.rtl-mirror { transform: scaleX(-1); transform-origin: center; }
html:dir(rtl). icon--arrow { transform: scaleX(-1); }

SVG için: 'transform-box: view-box;' kullan "Süzülmekten" kaçınmak için.
Resimlerin içindeki metinden kaçının - ayrı katmanlarda yerelleştirin.

6) Formlar ve giriş

İçerik hizalama: text-align: start; 'metin alanları, sayısal/miktarlar/URL/e-posta - LTR.

Nitelikler:
html
<input type="email" dir="ltr" inputmode="email" autocomplete="email">
<input type="number" dir="ltr" inputmode="numeric" pattern="[0-9]">
<input type="tel" dir="ltr" inputmode="tel" autocomplete="tel">

Yer tutucu/etiket yerelleştirilir, ancak sayı/kodlardaki özen soldan sağa gitmelidir.
Maskeler: sert bir şekilde "kesmeyin" dikkat; Ekleme ve seçimi destekler.
Liste/radyo/onay kutusu: denetimlerin sağındaki imzalar, 44 ≥ 44 piksel × alanları tıklatın.
En fazla kaydırıcılar: RTL'de, en azından sağ kenarda, en fazla solda (veya ters çevirme ve LTR numaraları olmayan bir ölçek gösterin).

7) Sayılar, tarihler, para birimleri

Varsayılan olarak, Arapça yerel ayarlar Arapça-Hint-küreleri (٠١٢٣٤٥٦٧٨٩) kullanır. Çözüm - İş Politikası:
  • Finansal kullanıcı arayüzünde, Latince sayılar (0-9) daha çok birlikte çalışabilirlik uğruna gösterilir, ancak biçim (boşluklar/işaretler) yereldir.
'Intl kullanın. 'hedef yerel ayarla:
js new Intl. NumberFormat('ar', { style:'currency', currency:'AED' }). format(2000);
new Intl. DateTimeFormat('he-IL', { dateStyle:'medium', timeStyle:'short' }). format(new Date());

Göreceli zaman ('Intl. RelativeTimeFormat '), yönlü sınırlayıcılar ve yerel gün/ay kısaltmaları.

8) Tipografi ve okunabilirlik

İyi Arapça/İbranice grafeme ve bitişik harflere sahip yazı tipleri (Arapça şekillendirme).
Satır aralığı 1. 4–1. 6; Dar izlemeden kaçının.
Arapça için, genişlikte hizalarken kashida'ya (uzatma vuruşları) izin verilir - dikkatlice açın ('text-justify: inter-word; '/motor desteği).
Arapça çizgi içinde Latin italik yasaklayın (dikey ritmi bozar).

9) Grafikler, ölçekler ve tablolar

X eksenleri sağdan sola doğru gider; Efsane satır içi ile hizalanmıştır.
Tablo sütunları: "birincil" sütun (isim/oyun) - sağ; Sayılar/miktarlar LTR olarak kalabilir ve satır içi uca hizalanabilir.

"+/ −" işaretleri ve yüzdeleri - sayıdan önce, LTR rakamları izole edilir:
html
<bdi dir="ltr">+12. 5%</bdi>

10) A11y ve ekran okuyucuları

'Lang ='ar "'/' lang ='he"' harfinin açığa çıktığından emin olun: TTS motoru doğru ses performansını seçecektir.
Ses dinamiği dikkatlice yönde değişir - gereksiz yere parçalar üzerinde'dir "değiştirmeyin.
Canlı güncellemeler ('aria-live =' kibar '') - yönleri karıştırmadan metin.
Simgeler metin etiketleri olmadan anlam ifade etmez; 'aria-label' kullanın.

11) iGaming'in özellikleri

11. 1 Bahis kuponu (betslip)

Alan sırası: miktar ² oran ² potansiyel kazanç; Doğru imzalar, LTR numaraları/faktörleri.
Katsayıları nazikçe güncelleyin; Yukarı/aşağı okların yansıtılması gerekmez (fiyat yönünün anlamı evrenseldir).

11. 2 Maçlar/Marketler

Liglerin/etkinliklerin listesini satır içi başlangıç ile hizalayın (RTL'de - sağda).
Zamanlayıcılar ve sayım - LTR'dir = "ltr" 'tablo rakamlarıyla (' font-variant-numeric: tabular-nums; ').

11. 3 Ödemeler/ACC

IBAN/BIC/telefon alanları her zaman LTR'dir.
Banka adları/adres - RTL.
Hatalar/doğrulayıcılar sağdaki işaretleyicileri gösterir.

11. 4 Turnuvalar/liderlik tabloları

Sütunlar: pozisyon, takma ad, gözlük - sağdaki pozisyon; Gözlükleri satır içi sonuna (LTR rakamları) hizalayın.

12) Üretim ve test

Kızlık pseudo-RTL:
css html. debug-rtl { direction: rtl; }
RTL'de otomatik ayna simgeleri (yalnızca yönlü):
css html:dir(rtl). icon-dir { transform: scaleX(-1); }
Autotests (fikir örnekleri):
  • 'Dir = rtl'de mizanpaj anlık görüntüleri.
  • CSS'de (tiftik)'sol/sağ'ın eksik olup olmadığını denetler.
  • E2E: sekme sırası, atlıkarınca kaydırmaları, kaydırıcı davranışı.
  • Arapça metin + LTR ekleri ile görsel testler (e-posta, toplam).

13) Tasarım sistemi belirteçleri (örnek)

json
{
"direction": {
"supported": ["ltr", "rtl"],
"rtlLocales": ["ar", "he", "fa", "ur"]
},
"layout": {
"gap": { "sm": 8, "md": 12, "lg": 16 },
"useLogicalProps": true
},
"icons": {
"autoMirror": true,
"exclude": ["logo", "chart", "clock", "play"]
},
"forms": {
"numericDir": "ltr",
"minTap": 44
},
"a11y": { "contrastAA": true, "live": "polite" }
}

14) Snippet'lar

Uygulamadaki yönü değiştirmek için (React):
tsx import { useEffect } from "react";

export function useDirection(locale: string) {
useEffect(() => {
const lang = locale. split("-")[0];
const isRTL = ["ar", "he", "fa", "ur"].includes(lang);
const html = document. documentElement;
html. setAttribute("dir", isRTL? "rtl": "ltr");
html. setAttribute("lang", locale);
}, [locale]);
}
Liste/breadcrumb uyumlaştırması:
css
.breadcrumb { display:flex; gap:8px; }
html:dir(rtl). breadcrumb { flex-direction: row-reverse; }
.breadcrumb__sep { transform: scaleX(var(--dir,1)); }
html:dir(rtl). breadcrumb__sep { --dir: -1; }
LTR parçaları olarak sayılar ve toplamlar:
html
<span>الربح المحتمل: <bdi dir="ltr">2,000. 00 UAH</bdi></span>
RTL için maksimum kaydırıcı:
css html:dir(rtl) input[type="range"] { direction: rtl; }

15) Antipatterns

Sert'sol/sağ '- stilleri RTL'yi bozar.
'Dir =' ltr 'olmadan numaralar/IBAN/URL girmek - "kırık" bakım ve sipariş.
Logoları/grafikleri/saatleri yansıtma.
Aynı simgeler kümesi her zaman aynalar - istisnasız olarak.
Karuseller, broşürler ve paginasyonlar baş aşağı değildir.
BiDi izolasyonu olmayan karışık dizeler - "dans eden" karakterler.

16) Metrikler

RTL kapsamı: RTL incelemesinden geçen ekranların oranı.
BiDi defects/release: karışık metin hatalarının sayısı.
Teslim süresi (LTR vs RTL):> %5-10 arasında farklılık göstermemelidir.
Sayı formlarında giriş hatası - yanlış bakım/maske ile olayların yüzdesi.
CLS/perf: "dir" geçtiğinde düzen sıçramıyor.

17) KG kontrol listesi

Yön ve düzen

  • '' RTL yerelleri için; ': dir (rtl)' stilleri uygulanır.
  • 'Sol/sağ' yerine Boole özellikleri.
  • Navigasyon/bredkramby/carousels/pagination zerkalitsya doğru.

Metin ve BiDi

  • Sayılar/para birimleri/URL/e-posta -'dir = "ltr" 'veya' '.
  • Karışık dizelerde "ters" karakterler yok.
  • 'Intl aracılığıyla yerelleştirilmiş tarihler/para birimleri. '.

Formlar

  • Doğru etiketler; 44 ≥ 44 piksel × alanlara tıklayın.
  • Telefon/IBAN/miktar - LTR caret, doğru maskeler.
  • Kaydırıcılar/alçaklar/yüksekler beklendiği gibi davranır.

Simgeler/Görüntüler

  • Sadece yönlü yansıtılır; İstisnalar karşılanır.
  • Yerel sürümleri olmayan resimlerde metin yok.

А11у/Performance

  • 'lang' maruz; SR doğru okur.
  • 'Dir'i değiştirirken gereksiz yere yeniden çizmek yok.
  • Kontrast/odak halkaları AA'ya karşılık gelir.

18) Tasarım sistemindeki belgeler

Yön ve BiDi bölümü: yansıtma ilkesi, simgeler için istisnalar listesi.
Bir dizi RTL belirteci ve bir stil linteri ('sol/sağ 'yasağı).
Do/Don't Gallery: karuseller, bredcrambs, sayı formları, kaydırıcılar, grafikler.
Pseudo-RTL komut dosyaları ve inceleme kontrol listeleri.

Kısa Özet

Uygun RTL desteği mantıksal CSS özellikleri, bilinçli yansıtma ve sıkı BiDi izolasyonudur. LTR'de sayıları/URL'leri izole edin, gezinmeyi ve yön simgelerini yansıtın, şekilleri öngörülebilir ve grafikleri okunabilir tutun. Arapça, İbranice, Farsça veya Urduca için arayüz doğal ve hızlı olacak - bir bahis kuponundan ve ödeme formlarından turnuva masalarına ve canlı maçlara kadar.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.