Le liste numerate o con punti RTL sono rotte

Esempio reale: ההנחיות בוויקי לגבי שמות - ישראל (Israel) - OpenStreetMap Community Forum

Questa sezione dovrebbe essere numerata, ma non lo è, presumibilmente a causa di CSS errato.

Il rendering è un po’ diverso sul desktop, ma è comunque rotto.

Proverò a dimostrarlo anche qui. Non so se dipenda dalle impostazioni del forum. Gli elenchi seguenti sono identici in inglese ed ebraico.

Numerati:

  1. Uno
  2. Due
    1. Due punto uno
    2. Due punto due
    3. Due punto tre
  3. Tre
    • Tre punto elenco uno
    • Tre punto elenco due

Punti elenco:

  • Punto elenco uno
  • Punto elenco due
    1. Punto elenco due numero uno
    2. Punto elenco due numero due
  • Punto elenco tre
    • Punto elenco tre punto elenco uno
    • Punto elenco tre punto elenco due

ממוספר:

  1. אחת
  2. שתיים
    1. שתיים נקודה אחת
    2. שתיים נקודה שתיים
    3. שתיים נקודה שלוש
  3. שלוש
    • שלוש פריט אחת
    • שלוש פריט שתיים

פריטים:

  • פריט אחת
  • פריט שתיים
    1. פריט שתיים מספר אחת
    2. פריט שתיים מספר שתיים
  • פריט שלוש
    • פריט שלוש פריט אחת
    • פריט שלוש פריט שתיים

Basato sull’anteprima: sì, è rotto anche qui. (Modifica: aggiunta uno screenshot sotto)

2 Mi Piace

Correzione suggerita:

1 Mi Piace

Grazie, spero che venga accettato! Ho aperto anche una richiesta per applicare questa patch direttamente al forum di OSM: Fix list CSS for RTL languages - This forum issues and requests - OpenStreetMap Community Forum

P.S. sembra che l’OP di questo thread sia stato automaticamente tradotto in inglese per me e non riesco a trovare un modo per vedere l’originale nell’interfaccia mobile. Cosa sta succedendo? Ovviamente il problema non è più visibile in questo caso. Meno male che ho catturato quello screenshot prima!

Questo potrebbe essere corretto Udi, ma penso che quella regola riguardi solo l’anteprima. Alcune di queste potrebbero persino essere un bug nel nostro CSS reverser.

@Osama hai qualche idea su questo?
Sono sicuro che possiamo risolvere questo problema, dando priorità a questo bug.

La regola completa (vedi riga #92) è:

.cooked,
.d-editor-preview {
  ul,
  ol {
     ...
  }
}

quindi si applica anche a .cooked (e non solo all’anteprima).

Questo potrebbe essere un bug nel reverser, ma in futuro, le proprietà start e end sono la soluzione migliore.

Udi

1 Mi Piace

Certo, ho unito tutto, fammi sapere come funziona?

Ottimo!

1 Mi Piace

Suppongo che il reverser venga applicato solo quando la lingua dell’UI è impostata su ebraico/arabo/etc., ma questo non è il caso qui. Il testo RTL può apparire nel contenuto anche quando la lingua dell’UI è LTR.

Come ha detto Udi, spesso è preferibile usare -inline-start/end invece di -left/right nei fogli di stile, e non usare un reverser soggetto a errori. Questo funzionerebbe correttamente sia per l’RTL incluso nel contenuto (nei post) sia per l’RTL di layout (basato sulla lingua dell’UI selezionata), con un solo foglio di stile. Potresti voler considerare la migrazione a questa soluzione e deprecare rtlcss. Ma, ovviamente, non sei obbligato a farlo, se non ci sono problemi reali da risolvere.

1 Mi Piace

Sì, sono d’accordo, dovremmo assolutamente avere un foglio di stile CSS solido per contenuti misti, se ti imbatti in altri esempi che necessitano di miglioramenti, una PR è totalmente benvenuta :hugs:

1 Mi Piace

@nat buona idea aggiungere il tag. Potresti volerlo aggiungere anche qui: Wrong -> arrow direction in RTL text contexts (non riesco a modificarlo per qualche motivo). Posterò alcune informazioni pertinenti in quel thread tra un secondo (ma in breve, è ancora un’impresa molto più grande di quanto dovrebbe essere, e ciò che ho scritto nell’OP è ancora corretto).

1 Mi Piace

Stavo giocando un po’ con questo artefatto AI per imparare queste cose:

https://meta.discourse.org/discourse-ai/ai-bot/artifacts/248/2

Sembra che ci sia una lunga lista di modifiche e pattern che dovremmo apportare per essere più compatibili con RTL.

È un argomento interessante da districare e insegnare alla gente. Anche le cose relative ai bordi sono molto interessanti.

1 Mi Piace

Sono contento che tu la trovi interessante! Anch’io :slight_smile:

Farò notare che per quanto ne so -top e -bottom vanno bene. È estremamente raro che -block-start e -block-end non vengano mappati rispettivamente ad essi, ciò dovrebbe accadere solo quando si utilizza il layout da alto a basso. Personalmente non ho alcuna esperienza con tali layout e penso che l’intero sito web dovrebbe probabilmente essere ridisegnato per accoglierli, quindi queste semplici modifiche CSS non sarebbero sufficienti. Ma a tutti gli effetti potrei sbagliarmi, non prendermi in parola!

Modifica: https://stackoverflow.com/questions/510068/how-do-i-make-text-run-top-to-bottom-in-css#53576895

1 Mi Piace

Le domande a cui sto pensando qui sono:

  • È possibile portare il nostro CSS in uno stato in cui la cosa di rtlcss non sia più necessaria?
  • Ne vale la pena?
  • Esiste uno stato intermedio salutare?

Stranamente, questa pagina dimostra un altro problema comune con le direzioni miste: lo scorrimento nella direzione sbagliata:

Sfortunatamente non ci ho mai guardato, quindi non posso dirti cosa lo causa e come evitarlo.

1 Mi Piace

È possibile - decisamente, ma potrebbe richiedere alcune modifiche all’HTML per collaborare con il CSS (posso fornire esempi più tardi).

Stato intermedio sano - Mi aspetterei che se cambi solo alcune cose in -inline-start, rtlcss le ignorerà, ma continuerà a convertire -left. Ciò significa che puoi passare progressivamente sempre più cose finché rtlcss non cambierà più nulla. A quel punto rtlcss potrà essere ritirato.

Ne vale la pena - non ho idea. Considera se questo renderebbe Discourse più stabile in RTL e se sarebbe più facile da mantenere a lungo termine. Davvero non lo so.

Ne vale decisamente la pena - forse necessario - per il CSS applicato ai contenuti generati dagli utenti che possono andare in entrambe le direzioni (di solito con dir="auto").

Inoltre, sebbene non riesca a pensare a un esempio al momento, a volte si vuole davvero impostare esplicitamente la proprietà left di qualcosa indipendentemente dalla direzione del layout. In quei casi rtlcss farebbe la cosa sbagliata, a meno che tu non abbia in qualche modo creato delle eccezioni.

1 Mi Piace

Ecco un esempio: Fix display of RTL tag and role values in element info table by jake-low · Pull Request #790 · OSMCha/osmcha-frontend · GitHub

Gli elementi <span> aggiuntivi all’interno degli elementi <td> sono necessari per far sì che la tabella venga visualizzata nel layout desiderato. In un contesto RTL, lo pseudo-elemento ::before si trova a destra, quindi se il td fosse esso stesso RTL, il segno = che separa la chiave e il valore verrebbe invece alla fine (lato destro) della riga della tabella.

In pratica, a volte è necessario annidare un elemento aggiuntivo per dargli una direzione separata dal suo genitore. Ma questo potrebbe essere un bene a seconda della prospettiva.

2 Mi Piace

Non credo che varrebbe la pena fare uno sforzo per aggiornare il nostro CSS in core, plugin e temi solo per rimuovere la nostra dipendenza da rtlcss. Un passo intermedio sano potrebbe essere quello di utilizzare CSS agnostici rispetto alla direzione per le aree che contengono contenuti generati dagli utenti, come post e biografie, e per tutto il resto rtlcss farà il suo lavoro.

3 Mi Piace

Questo argomento è stato automaticamente chiuso dopo 14 ore. Non sono più consentibili nuove risposte.