Listas numeradas ou com marcadores RTL estão quebradas

Exemplo do mundo real: ההנחיות בוויקי לגבי שמות - ישראל (Israel) - OpenStreetMap Community Forum

Esta seção deveria ser numerada, mas não é - presumivelmente por causa de CSS ruim.

A renderização é um pouco diferente no desktop, mas ainda assim está quebrada.

Vou tentar demonstrar aqui também. Não sei se depende das configurações do fórum. As seguintes listas são idênticas em inglês e hebraico.

Numerado:

  1. Um
  2. Dois
    1. Dois ponto um
    2. Dois ponto dois
    3. Dois ponto três
  3. Três
    • Três item um
    • Três item dois

Marcador:

  • Item um
  • Item dois
    1. Item dois número um
    2. Item dois número dois
  • Item três
    • Item três item um
    • Item três item dois

ממוספר:

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

פריטים:

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

Com base na prévia - sim, também está quebrado aqui. (Editar: adicionei uma captura de tela abaixo)

2 curtidas

Correção sugerida:

1 curtida

Obrigado, espero que isso seja aceito! Abri uma solicitação para aplicar este patch diretamente no fórum do OSM também: Fix list CSS for RTL languages - This forum issues and requests - OpenStreetMap Community Forum

P.S. parece que o OP deste tópico foi traduzido automaticamente para o inglês para mim e não consigo encontrar uma maneira de ver o original na interface móvel. O que está acontecendo aí? Obviamente, o problema não é mais visível neste caso. Ainda bem que capturei essa captura de tela mais cedo!

Isso pode estar correto, Udi, mas acho que essa regra é apenas sobre a visualização. Parte disso pode até ser um bug no CSS reverso que usamos.

@Osama, alguma opinião sobre isso?

Tenho certeza que podemos resolver isso, priorizando este bug.

A regra completa (veja a linha nº 92) é:

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

portanto, aplica-se a .cooked também (e não apenas à pré-visualização).

Este pode ser um bug no reversor, mas daqui para frente, as propriedades start e end são a melhor solução.

Udi

1 curtida

Claro, eu mesclei, me avise como funciona?

Ótimo!

1 curtida

Acredito que o inversor só é aplicado quando o idioma da interface de usuário está definido como Hebraico/Árabe/etc., mas esse não é o caso aqui. O texto RTL pode aparecer no conteúdo mesmo quando o idioma da interface é LTR.

Como o Udi mencionou, muitas vezes é preferível usar -inline-start/end em vez de -left/right nas folhas de estilo, e não usar um inversor propenso a erros. Isso funcionaria corretamente tanto para o RTL embutido (nos conteúdos das postagens) quanto para o RTL de layout (com base no idioma da interface selecionado), com apenas uma folha de estilo. Você pode querer considerar a migração para isso e aposentar o rtlcss. Mas é claro, você não precisa fazer isso, se não houver um problema real a ser resolvido.

1 curtida

Sim, concordo, deveríamos ter uma folha de estilos CSS sólida para conteúdo misto, se você encontrar mais exemplos que precisem de melhorias, um PR é totalmente bem-vindo :hugs:

1 curtida

@nat boa ideia adicionar a tag. Talvez queira adicioná-la aqui também: Wrong -> arrow direction in RTL text contexts (não consigo editar por algum motivo). Postarei algumas informações relevantes nesse tópico em um segundo (mas, em resumo, ainda é uma tarefa muito maior do que deveria ser, e o que escrevi no OP ainda está correto).

1 curtida

Estive brincando um pouco com este artefato de IA para aprender sobre essas coisas:

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

Parece que há uma longa lista de mudanças e padrões que precisaríamos fazer para ser mais amigável com RTL.

É um item interessante para desvendar e ensinar às pessoas. As coisas de borda também são muito interessantes.

1 curtida

Fico feliz que ache interessante! Eu também acho :slight_smile:

Mencionarei que, até onde sei, -top e -bottom estão corretos. É extremamente raro que -block-start e -block-end não sejam mapeados para eles, respectivamente, isso só aconteceria ao usar o layout Top-To-Bottom. Pessoalmente, não tenho experiência com tais layouts, e acho que todo o site provavelmente precisaria ser redesenhado para acomodá-los, então esses simples ajustes de CSS não seriam suficientes. Mas, de qualquer forma, posso estar errado, não leve minha palavra como verdade!

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

1 curtida

As perguntas que estou pensando aqui são:

  • É possível colocar nosso CSS em um estado onde o rtlcss não precise mais ser executado?
  • Vale a pena?
  • Existe um estado intermediário saudável?

Curiosamente, esta página demonstra outro problema comum com direções mistas - rolar na direção errada:

Infelizmente, eu nunca investiguei isso, então não posso dizer o que o causa e como evitá-lo.

1 curtida

É possível - definitivamente, mas pode exigir alguns ajustes no HTML para cooperar com o CSS (posso dar exemplos mais tarde).

Estado intermediário saudável - Eu esperaria que, se você mudar apenas algumas coisas para -inline-start, o rtlcss as ignoraria, mas continuaria convertendo -left. Isso significa que você pode alternar progressivamente mais e mais coisas até que o rtlcss não mude mais nada. Nesse ponto, o rtlcss pode ser aposentado.

Vale a pena - sem ideia. Considere se isso tornaria o Discourse mais estável em RTL e se seria mais fácil de manter a longo prazo. Eu realmente não sei.

É definitivamente válido a pena - talvez necessário - para CSS aplicado a conteúdo gerado pelo usuário que pode ir em qualquer direção (geralmente com dir="auto").

Além disso, embora eu não consiga pensar em um exemplo de imediato, às vezes você realmente quer definir explicitamente a propriedade left de algo, independentemente da direção do layout. Nesses casos, o rtlcss faria a coisa errada, a menos que você tenha feito exceções para isso de alguma forma.

1 curtida

Aqui está um exemplo: Fix display of RTL tag and role values in element info table by jake-low · Pull Request #790 · OSMCha/osmcha-frontend · GitHub

Os elementos <span> adicionais dentro dos elementos <td> são necessários para que a tabela seja renderizada no layout desejado. Em um contexto RTL, o pseudo-elemento ::before fica à direita, então se o td em si fosse RTL, o sinal = que separa a chave e o valor ficaria no final (lado direito) da linha da tabela.

Basicamente, às vezes você precisa aninhar um elemento extra para dar a ele uma direção separada de seu pai. Mas isso pode ser uma coisa boa, dependendo da sua perspectiva.

2 curtidas

Não acho que valha a pena o esforço de atualizar nosso CSS em todos os núcleos, plugins e temas apenas para remover nossa dependência do rtlcss. Um passo intermediário saudável seria usar CSS agnóstico de direção para áreas que contêm conteúdo gerado pelo usuário, como posts e bios, e para todo o resto, o rtlcss fará o trabalho.

3 curtidas

Este tópico foi fechado automaticamente após 14 horas. Novas respostas não são mais permitidas.