GH GambleHub

RTL dəstəyi

1) Prinsiplər

1. RTL mətnin tərcüməsi deyil, düşüncə güzgüsüdür. Oxlar, oxu sırası, fokus sırası, jestlər və naviqasiya dəyişir.
2. left/right əvəzinə məntiqi CSS xüsusiyyətləri. 'margin-inline-start', 'inset-inline-end', 'border-start-start-radius' və s.
3. Qlobal olaraq istiqaməti açırıq, LTR fraqmentlərini lokallaşdırırıq. Ədədlər, URL, kodlar, e-mail və IBAN həmişə soldan sağa oxunur.
4. Mənadan deyil, istiqamətdən asılı olanı əks etdirin. «Play», «↙» və saat/proses nişanları güzgü ola bilməz.
5. Psevdo-RTL test edin. 'dir =' rtl ''/' direction: rtl' və çıxış əvvəl pseudo tərcüməçiləri daxil edin.

2) istiqamət: 'dir' və məntiqi xüsusiyyətləri

Sənəd/kökündə qlobal:
html
<html lang="ar" dir="rtl"> … </html>
Məntiqi xüsusiyyətlər (left/right əvəz):
css
.card { padding-inline: 16px; margin-inline: 12px; }
.sidebar { inset-inline-start: 0; }
.button { border-start-start-radius: 12px; border-end-end-radius: 12px; }
Selektorlar:
css
:root:dir(rtl). breadcrumb { flex-direction: row-reverse; }
:root:dir(ltr). breadcrumb { flex-direction: row; }
İstifadəçi məzmununun yerli avto istiqaməti:
html
<p dir="auto">…</p>

3) BiDi və qarışıq mətn izolyasiyası

Ərəb/ivrit və latın/ədədlərin qarışması simvolların sırasını pozur. BiDi izolyasiya istifadə edin:
  • Tags: '' (istiqaməti təcrid edir), ' '(zorla yenidən təyin edir).
Unicode Markers:
  • '\u2066 'LRI/'\u2067' RLI - LTR/RTL izolyasiyasının başlanğıcı, '\u2069 'PDI - son,
  • \ u200E 'LRM/\u200F' RLM - qısa əlavələr üçün bir bitli markerlərdir.
Hesab nömrəsi və valyuta ilə ifadə nümunəsi:
html
<span dir="rtl">
سحب <bdi dir="ltr">IBAN AE070331234567890123456</bdi> بمبلغ
<bdi dir="ltr">2,000. 00 UAH</bdi>
</span>

4) Naviqasiya, iyerarxiya və maketlər

Breadcrumbs: güzgü qaydası: «الصفحة الريسية الرهان التاكيد».
Panellər/menyu: əsas navbar - sağda; «geri» sola işarə edir (RTL xəttinin əvvəlinə).
Kartlar/siyahılar: başlıqları inline-start ilə bərabərləşdirin; status nişanları - inline-end.
Karusellər və sıçrayışlar: inline-start tərəfə (RTL-də - sağa). Səhifə göstəriciləri də güzgüdür.
Pagination: «next» oxu inline-start, «əvvəlki» - inline-end.

5) Simvollar və şəkillər

Yönlü piktoqramları əks etdirin: oxlar, «irəli/geri», play-head, «açmaq/çevirmək».
Əks etdirməyin: mətn, qrafik, saat nişanları (real vaxt oxu varsa), marka loqotipləri.

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

SVG üçün: 'transform-box: view-box;' istifadə edin ki, «üzməyin».
Şəkillərin içindəki mətndən çəkinin → ayrı-ayrı qatlarla lokallaşdırın.

6) Formalar və giriş

Məzmun üzrə bərabərləşdirmə: 'text-align: start;' mətn sahələri, ədədi/məbləğ/URL/e-mail - LTR.

Atributlar:
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">

Placeholder/label lokallaşdırılmışdır, lakin ədədlərdə/kodlarda caret soldan sağa getməlidir.
Maskalar: caret sərt «tutmayın»; əlavə və seçimi dəstəkləyin.
Siyahı/radio/çekbox: sağ tərəfdəki imzalar, klik zonası ≥ 44 × 44 px.
min → max sürgüləri: RTL-də sağ kənarda minimum, sol tərəfdə maksimum (və ya tərs və LTR rəqəmlərini göstərin).

7) Rəqəmlər, tarixlər, valyutalar

Default olaraq ərəb lokallarında ərəb indosifraları (٠١٢٣٤٥٦٧٨٩) istifadə olunur. Həll - biznes siyasəti:
  • Maliyyə UI daha çox latın rəqəmləri (0-9) interoperability üçün göstərilir, lakin format (boşluqlar/işarələr) yerli olaraq.
Hədəf yerlə 'Intl.' istifadə edin:
js new Intl. NumberFormat('ar', { style:'currency', currency:'AED' }). format(2000);
new Intl. DateTimeFormat('he-IL', { dateStyle:'medium', timeStyle:'short' }). format(new Date());

Nisbi vaxt ('Intl. RelativeTimeFormat '), gün/ay istiqamətləndirilmiş ayırıcılar və yerli ixtisarlar.

8) Mətbəə və oxunuş

Yaxşı ərəb/yəhudi qrafeması və liqaturaları olan şriftlər (Arabic shaping).
Sətirlərarası interval 1. 4–1. 6; dar izləmələrdən çəkinin.
Ərəbcə kashida (ştrixlərin uzadılması) üçün eninə hizalamada - diqqətlə açın ('text-justify: inter-word; '/mühərrik dəstəyi).
Ərəb sətri daxilində latın qrafikası kursivini qadağan edin (şaquli ritmi korlayır).

9) Qrafiklər, şkalalar və cədvəllər

X oxları sağdan sola doğru gedir; əfsanə inline-end üzrə bərabərləşir.
Cədvəllərin sütunları: «birincil» sütun (ad/oyun) - sağda; Nömrələr/məbləğlər LTR olaraq qala bilər və inline-end üzrə bərabərləşə bilər.

Rəqəmdən əvvəl «+/ −» işarələri və faizlər, LTR-təcrid olunmuş rəqəmlər:
html
<bdi dir="ltr">+12. 5%</bdi>

10) A11y və ekranlar

'lang =' ar ''/' lang =' he '' -nin təqdim olunduğundan əmin olun: TTS mühərriki düzgün səslənməni seçəcək.
Dinamik istiqamət dəyişikliklərini diqqətlə səsləndirin - zərurət olmadan parçalarda 'dir' keçməyin.
Canlı yeniləmələr ('aria-live = «polite»') - istiqamətləri qarışdırmadan mətn.
Nişanlar mətn işarələri olmadan məna vermir; 'aria-label' istifadə edin.

11) iGaming xüsusiyyətləri

11. 1 Kupon bahis (betslip)

Sahə sırası: məbləğ → əmsal → potensial uduşlar; sağdakı imzalar, rəqəmlər/LTR əmsalları.
Yeniləmə əmsalları yumşaq işıqlandırın; «yuxarı/aşağı» oxları güzgü lazım deyil (qiymət istiqamətinin mənası universaldır).

11. 2 Matçlar/Bazarlar

Liqaların/hadisələrin siyahısını inline-start ilə (RTL-də - sağda) bərabərləşdirin.
Taymerlər və hesab - LTR 'dir = «ltr»' cədvəl rəqəmləri ilə ('font-variant-numeric: tabular-nums;').

11. 3 Ödənişlər/KUS

IBAN/BIC/telefon sahələri həmişə LTR.
Bank adları/ünvanı - RTL.
Səhvlər/validatorlar sağdakı markerləri göstərir.

11. 4 Turnirlər/Liderbordlar

Sütunlar: mövqe, nik, eynək - sağ mövqe; eynək inline-end (LTR rəqəmləri).

12) İstehsal və sınaq

qız Psevdo-RTL:
css html. debug-rtl { direction: rtl; }
RTL-də simgələrin auto-perdəsi (yalnız istiqamətləndirilmiş):
css html:dir(rtl). icon-dir { transform: scaleX(-1); }
Avtostestlər (fikir nümunəsi):
  • Mizanpaj snapshotları 'dir = rtl'.
  • CSS-də 'left/right' yoxluğunu yoxlayın.
  • E2E: tabulyasiya qaydası, atlı karusellər, sürgülərin davranışı.
  • Ərəb mətni + LTR əlavələri ilə vizual testlər (e-mail, məbləğ).

13) Dizayn sistemi tokenləri (nümunə)

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) Snippetlər

Tətbiqdə istiqaməti dəyişdirin (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]);
}
Siyahıların/çılğınlıqların uyğunlaşdırılması:
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 fraqmentləri kimi ədədlər və məbləğlər:
html
<span>الربح المحتمل: <bdi dir="ltr">2,000. 00 UAH</bdi></span>
RTL üçün min → max sürgüsü:
css html:dir(rtl) input[type="range"] { direction: rtl; }

15) Antipattern

Sərt 'left/right' stillərində → RTL qırılır.
Rəqəmlərin daxil edilməsi/IBAN/URL 'dir = «ltr»' → «sınıq» caret və sifariş.
Loqotiplərin/qrafiklərin/saatların güzgüsü.
Eyni nişanlar dəsti həmişə güzgüdür - məna baxımından istisnasız.
Karusellər, yarpaqlar və paginasiyalar tərs deyil.
BiDi izolyasiyasız qarışıq sətirlər → «rəqs» simvolları.

16) Metrika

RTL coverage: RTL review keçmiş ekranların payı.
BiDi qüsurları/release: qarışıq mətn baqlarının sayı.
Əsas tapşırıqların yerinə yetirilməsi vaxtı (LTR vs RTL):> 5-10% fərqlənməlidir.
Rəqəmlərin formalarına daxil edilmə səhvi: səhv caret/maska ilə hadisələrin payı.
CLS/perf: 'dir' -açma zamanı maket sıçrayışı olmadan.

17) QA-çek siyahısı

Istiqamət və maket

  • '' RTL lokalları üçün; ': dir (rtl)' stilləri tətbiq olunur.
  • Əvəzinə məntiqi xüsusiyyətləri 'left/right'.
  • Naviqasiya/Bradcramb/Carousels/Pagination düzgün güzgü.

Mətn və BiDi

  • Ədədlər/Valyuta/URL/E-mail - 'dir = «ltr»' və ya ''.
  • Qarışıq sətirlərdə heç bir «tərs» simvol yoxdur.
  • 'Intl.' Vasitəsilə tarixlər/valyutalar lokallaşdırılmışdır.

Formalar

  • Sağdakı imzalar; click zonaları ≥ 44 × 44 px.
  • Telefon/IBAN/məbləğ - LTR caret, düzgün maskalar.
  • Sürgülər/minimumlar/maksimumlar gözlənilən davranır.

Nişanlar/Şəkillər

  • Yalnız yönləndirilmiş güzgü; istisnalar müşahidə olunur.
  • Yerli versiyası olmayan şəkillərdə mətn yoxdur.

A11u/Performans

  • 'lang' posted; SR düzgün oxuyur.
  • 'dir' dəyişdikdə lazımsız yenidən çəkilmə yoxdur.
  • Kontrast/Focus Ring AA uyğun gəlir.

18) Dizayn sistemində sənədləşmə

Direction & BiDi bölməsi: güzgü siyasəti, nişanlar üçün istisnalar siyahısı.
RTL tokenləri və linter stilləri (qadağan 'left/right').
Do/Don 't qalereyası: karusellər, bradkramplar, ədədlərin formaları, slaydlar, qrafiklər.
Psevdo-RTL skriptləri və review çek vərəqləri.

Qısa xülasə

Düzgün RTL dəstəyi məntiqi CSS xüsusiyyətləri, şüurlu güzgü və ciddi BiDi izolyasiyasıdır. LTR-də sayları/URL-ləri təcrid edin, güzgü naviqasiyası və yönlü nişanlar, formaları proqnozlaşdırıla bilən, qrafikləri isə oxunaqlı saxlayın. Beləliklə, ərəb, ivrit, fars və ya urdu üçün interfeys təbii və sürətli olacaq - kupon dərəcələri və ödəniş formaları turnir cədvəlləri və canlı matçlar.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.