GH GambleHub

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!

Telegram
@Gamble_GC
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.