GH GambleHub

Supporto RTL

1) Principi

1. RTL non è una traduzione, ma un mirroring del pensiero. Cambiano assi, ordine di lettura, ordine di attivazione, gesti e navigazione.
2. Proprietà CSS logiche invece di left/right. Vai a margin-inline-start, inset-inline-end, border-start-start-radius, ecc.
3. Attiviamo globalmente la direzione, isoliamo localmente i frammenti LTR. Numeri, URL, codici, e-mail e BAN vengono sempre letti da sinistra a destra.
4. Specchiate ciò che dipende dalla direzione, non dal senso. «Play», «↗», «↙» e le icone dell'orologio/processo potrebbero non mirarsi.
5. Prova pseudonimo-RTL. Accendete dir = «rtl »/« direction: rtl» e pseudoperatori prima di uscire.

2) Direzione: «dir» e proprietà logiche

Globale sul documento/radice:
html
<html lang="ar" dir="rtl"> … </html>
Proprietà logiche (sostituzione left/right):
css
.card { padding-inline: 16px; margin-inline: 12px; }
.sidebar { inset-inline-start: 0; }
.button { border-start-start-radius: 12px; border-end-end-radius: 12px; }
Selettori di direzione:
css
:root:dir(rtl). breadcrumb { flex-direction: row-reverse; }
:root:dir(ltr). breadcrumb { flex-direction: row; }
Orientamento auto locale dei contenuti personalizzati:
html
<p dir="auto">…</p>

3) BiDi e isolamento del testo misto

La miscelazione tra arabo/ebraico e latino/numero rompe l'ordine dei caratteri. Utilizzare l'isolamento BiDi:
  • Tag: '' (isola la direzione), '' (sovrascrive).
Marcatori unicode:
  • '\u2066 'LRI/'\u2067' RLI - Inizio dell'isolamento LTR/RTL, '\u2069 'PDI - Fine,
  • '\u200' E 'LRM/'\u200F'RLM è un indicatore di inserimento breve.
Esempio di frase con numero di conto e valuta:
html
<span dir="rtl">
سحب <bdi dir="ltr">IBAN AE070331234567890123456</bdi> بمبلغ
<bdi dir="ltr">2,000. 00 UAH</bdi>
</span>

4) Navigazione, gerarchia e layout

Breadcrumbs: l'ordine è specchio: « ».
Pannelli/menu: navbar principale a destra; «indietro» indica a sinistra (all'inizio della riga RTL).
Schede/elenchi: allinea le intestazioni in inline-start; icone di stato - a inline-end.
Caroselli e swipe: scorrimento verso inline-start (RTL-Destra). Anche gli indicatori di pagina sono mirroring.
Paginazione: la freccia «successiva» viene inviata a inline-start, la freccia «precedente» a inline-end.

5) Icone e immagini

Specchiate le icone dirette: frecce, «avanti/indietro», testa di play, «espandi/taglia».
Non mirroring: icone di testo, grafici, orologi (se c'è una vera freccia temporale), loghi dei marchi.

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

Per SVG: usate'transfer-box: view-box; 'per non fluttuare'.
Evitare il testo all'interno delle immagini e localizzare i singoli livelli.

6) Moduli e input

Allineamento dei contenuti: campi di testo in «text-align: start;», numeri/importi/URL/e-mail - LTR.

Attributi:
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 sono localizzati, ma caret in numeri/codici deve andare da sinistra a destra.
Maschere: non «intercettare» caret in modo rigido; supportare l'inserimento e la selezione.
Lista/radio/checkbox: firme a destra dei controlli, zona click 44 x 44 px.
Slider min→max: in RTL, minimo a destra, massimo a sinistra (o mostra la scala senza inversione e i numeri LTR).

7) Numeri, date, valute

Per impostazione predefinita, le zone arabe utilizzano gli indocifri arabo (٠١٢٣٤٥٦٧٨٩). Soluzione: politica aziendale:
  • La UI finanziaria mostra più frequentemente i numeri latini (0-9) per interoperabilità, ma il formato (spazi/segni) è locale.
Usa Intl con la posizione di destinazione:
js new Intl. NumberFormat('ar', { style:'currency', currency:'AED' }). format(2000);
new Intl. DateTimeFormat('he-IL', { dateStyle:'medium', timeStyle:'short' }). format(new Date());

Ora relativa ('Intl. RelativeTimeFormat '), separatori e riduzioni locali di giorni/mesi.

8) Tipografia e leggibilità

Caratteri con buon grafema arabo/ebraico e legature (Arabic shaping).
Intervallo tra righe 1. 4–1. 6; Evitate i tracking stretti.
Per l'arabo, kashida (allungamento dei tratti) quando si allinea alla larghezza - Accendi con cautela ('text-justify: inter-word; '/supporto motore).
Disattiva il corsivo del latino all'interno della riga araba (rovina il ritmo verticale).

9) Grafici, scala e tabelle

Gli assi X vanno da destra a sinistra; la leggenda si allinea in inline-end.
Colonne di tabella: colonna primaria (nome/gioco) a destra; numeri/importi possono rimanere LTR e allinearsi a inline-end.

Segni +/- e percentuali prima del numero, numeri LTR isolati:
html
<bdi dir="ltr">+12. 5%</bdi>

10) A11y e schermate

Assicurati che il motore TTS scelga la voce corretta.
Le modifiche dinamiche alla direzione possono essere pronunciate con attenzione - non cambiare dir su frammenti senza necessità.
Gli aggiornamenti Lave ('aria-live = «polite») sono un testo senza miscelare le direzioni.
Le icone non trasmettono il significato senza etichette di testo; usate'aria-label '.

11) Specificità del iGaming

11. 1 Coupon puntata (betslip)

Ordine dei campi: l'importo del fattore di è una vincita potenziale; firme a destra, numeri/cooff LTR.
Evidenziare lievemente gli aggiornamenti dei coefficienti. le frecce «su/giù» non devono essere specchiate (il senso della direzione del prezzo è universale).

11. 2 Partite/mercati

Allineare l'elenco delle leghe/eventi a inline-start (in RTL a destra).
Timer e conto - LTR 'dir = «ltr» con numeri tabellari (' font-variant-numeric: tabula-nums; ').

11. 3 Pagamenti/CUS

I campi BAN/BIC/telefono sono sempre LTR.
I nomi bancari/indirizzi sono RTL.
Gli errori/validi mostrano i marcatori a destra.

11. 4 Tornei/liderboard

Colonne: posizione, nick, punti - posizione destra; allineare gli occhiali a inline-end (cifre LTR).

12) Produzione e test

Pseudonimo-RTL nella vergine:
css html. debug-rtl { direction: rtl; }
Etichetta un'icona in RTL (solo diretti):
css html:dir(rtl). icon-dir { transform: scaleX(-1); }
Autostar (esempio di idee):
  • Snapshot layout à dir = rtl ".
  • Verifica l'assenza dì left/right'nel CSS (lente).
  • E2E: ordine di tabulazione, svip della giostra, comportamento delle slider.
  • Test visivi con testo arabo + inserzioni LTR (e-mail, importo).

13) Token di progettazione (esempio)

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

Cambio direzione in applicazione (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]);
}
Armonizzazione degli elenchi/crambi:
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; }
Numeri e importi come frammenti LTR:
html
<span>الربح المحتمل: <bdi dir="ltr">2,000. 00 UAH</bdi></span>
Slider min→max per RTL:
css html:dir(rtl) input[type="range"] { direction: rtl; }

15) Antipattern

«Left/right» in stile → si rompe RTL.
Immettere i numeri/BAN/URL senza «dir =» ltr «» «frammentato» caret e ordine.
Mirroring di loghi/grafici/orologi.
Lo stesso set di icone si specchia sempre, senza eccezioni di senso.
Giostre, fogliette e paginazioni non sono rovesciate.
Le righe miste senza isolamento BiDi → i caratteri danzanti.

16) Metriche

RTL coverage è una quota di schermi passati da RTL-Review.
BiDi difetti/rilascio è il numero di bagagli di testo misto.
Tempo di esecuzione delle attività chiave (LTR vs RTL): non deve essere diverso> 5-10%.
Errore di immissione dei numeri nei moduli: percentuale di eventi con caret/maschera non valida.
CLS/perf: nessun salto di layout a dir - connessione.

17) Lista assegni QA

Direzione e layout

  • '
  • Proprietà logiche anziché «left/right».
  • Navigazione/delirante cramba/giostra/paginazione si specchiano correttamente.

Testo e BiDi

  • Numeri/valute/URL/e-mail - "dir =" ltr "o" ".
  • Nessun carattere «ribaltato» nelle righe miste.
  • Localizzato data/valuta tramite «Intl».

Moduli

  • Firme a destra; zone click 44 x 44 px.
  • Telefono/BAN/importo - LTR caret, maschere corrette.
  • Slider/minimi/massimi si comportano in modo prevedibile.

Icone/Immagini

  • Si specchiano solo quelli diretti; eccezioni rispettate.
  • Nessun testo nelle immagini senza versione locale.

A11u/Performance

  • 'lang'; La SR legge correttamente.
  • Non ci sono ritocchi superflui quando si cambià dir ".
  • Gli anelli di contrasto/fuoco corrispondono a AA.

18) Documentazione in progettazione

La sezione Direction & BiDi è un criterio di mirroring, una lista di eccezioni per le icone.
Set di token RTL e linter (proibizione'left/right').
Galleria Do/Don't: caroselli, crampi, forme di numeri, slider, grafici.
Gli script sono pseudonimi-RTL e gli assegni sono gelosi.

Breve riepilogo

Il giusto supporto RTL sono le proprietà CSS logiche, il mirroring consapevole e l'isolamento BiDi rigoroso. Isolare i numeri/URL in LTR, mirroring e icone dirette, mantenere le forme prevedibili e i grafici leggibili. Così l'interfaccia per arabo, ebraico, farsi o urdu sarà naturale e veloce, dal coupon scommesse e moduli di pagamento alle tabelle di tornei e partite live.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.