Las listas numeradas o con viñetas de RTL están dañadas

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

Esta sección debería estar numerada, pero no lo está; presumiblemente debido a CSS incorrecto.

La representación es un poco diferente en el escritorio, pero sigue rota.

Intentaré demostrarlo aquí también. No sé si depende de la configuración del foro. Las siguientes listas son idénticas en inglés y hebreo.

Numerado:

  1. Uno
  2. Dos
    1. Dos punto uno
    2. Dos punto dos
    3. Dos punto tres
  3. Tres
    • Tres punto uno
    • Tres punto dos

Viñeta:

  • Viñeta uno
  • Viñeta dos
    1. Viñeta dos número uno
    2. Viñeta dos número dos
  • Viñeta tres
    • Viñeta tres viñeta uno
    • Viñeta tres viñeta dos

ממוספר:

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

פריטים:

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

Según la vista previa, sí, aquí también está roto. (Edición: agregué una captura de pantalla a continuación)

2 Me gusta

Solución sugerida:

1 me gusta

¡Gracias, espero que esto sea aceptado! También he abierto una solicitud para aplicar este parche directamente en el foro de OSM: Fix list CSS for RTL languages - This forum issues and requests - OpenStreetMap Community Forum

P.D. Parece que el OP de este hilo fue traducido automáticamente al inglés para mí y no encuentro una forma de ver el original en la interfaz móvil. ¿Qué está pasando ahí? Obviamente, el problema ya no es visible en este caso. ¡Menos mal que capturé esa captura de pantalla antes!

Esto puede ser correcto Udi, pero creo que esa regla es solo sobre la vista previa. Parte de esto podría ser incluso un error en el inversor CSS que usamos.

@Osama ¿alguna idea sobre esto?

Estoy seguro de que podemos solucionar esto, priorizando este error.

La regla completa (ver línea #92) es:

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

por lo que también se aplica a .cooked (y no solo a la vista previa).

Este podría ser un error en el inversor, pero de ahora en adelante, las propiedades start y end son la mejor solución.

Udi

1 me gusta

Claro, lo fusioné,¿me dices cómo funciona?

¡Genial!

1 me gusta

Supongo que el inversor solo se aplica cuando el idioma de la interfaz de usuario está configurado en Hebreo/Árabe/etc., esto no es así aquí. El texto de dirección de derecha a izquierda (RTL) puede aparecer en el contenido incluso cuando el idioma de la interfaz de usuario es de izquierda a derecha (LTR).

Como mencionó Udi, a menudo es preferible usar -inline-start/end en lugar de -left/right en las hojas de estilo, y no usar un inversor propenso a errores. Esto funcionaría correctamente tanto para la RTL embebida (en los contenidos de las publicaciones) como para la RTL de diseño (según el idioma de la interfaz de usuario seleccionado), con una sola hoja de estilo. Podrías considerar migrar a eso y retirar rtlcss. Pero, por supuesto, no es obligatorio si no hay un problema real que resolver.

1 me gusta

Sí, estoy de acuerdo, deberíamos tener una hoja de estilos CSS sólida para contenido mixto, si encuentras algún otro ejemplo que necesite mejorar, una PR es totalmente bienvenida :hugs:

1 me gusta

@nat buena idea añadir la etiqueta. Quizás quieras añadirla aquí también: Wrong -> arrow direction in RTL text contexts (no puedo editarlo por alguna razón). Publicaré información relevante en ese hilo en un segundo (pero en resumen, sigue siendo una tarea mucho más grande de lo necesario, y lo que escribí en el OP sigue siendo correcto).

1 me gusta

Estuve jugando un poco con este artefacto de IA para aprender sobre estas cosas:

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

Parece que hay una larga lista de cambios y patrones que necesitaríamos hacer para que sea más amigable con RTL.

Es algo interesante de desenredar y enseñar a la gente. Las cosas del borde también son muy interesantes.

1 me gusta

¡Me alegra que te parezca interesante! A mí también :slight_smile:

Mencionaré que, hasta donde sé, -top y -bottom están bien. Es extremadamente raro que -block-start y -block-end no se mapeen a ellos respectivamente, eso solo debería suceder al usar el diseño de arriba a abajo. Personalmente, no tengo experiencia con tales diseños en absoluto, y creo que todo el sitio web probablemente necesitaría ser rediseñado para acomodarlos, por lo que estos simples ajustes de CSS no serían suficientes. ¡Pero de todos modos podría estar equivocado, no me creas a ciegas!

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

1 me gusta

Las preguntas que estoy considerando aquí son:

  • ¿Es posible llevar nuestro CSS a un estado en el que lo de rtlcss ya no sea necesario ejecutarlo?
  • ¿Vale la pena?
  • ¿Existe un estado intermedio saludable?

Curiosamente, esta página demuestra otro problema común con las direcciones mixtas: desplazarse en la dirección equivocada:

Desafortunadamente, nunca investigué esto, así que no puedo decirte qué lo causa y cómo evitarlo.

1 me gusta

[cita=“sam, post:14, tema:367516, completo:verdadero”]
Las preguntas que estoy considerando aquí son:

  • ¿Es posible lograr que nuestro CSS esté en un estado en el que ya no sea necesario ejecutar rtlcss?
  • ¿Vale la pena?
  • ¿Existe un estado intermedio saludable?
    [/cita]

¿Es posible? - Definitivamente, pero puede requerir algunos ajustes en HTML para que coopere con CSS (puedo dar ejemplos más tarde).

Estado intermedio saludable - Esperaría que si solo cambias algunas cosas a -inline-start, entonces rtlcss las ignoraría, pero seguiría convirtiendo -left. Esto significa que puedes cambiar progresivamente más y más cosas hasta que rtlcss ya no cambie nada. En ese momento, rtlcss puede retirarse.

¿Vale la pena? - No tengo idea. Considera si esto haría que Discourse fuera más estable en RTL, y si sería más fácil de mantener a largo plazo. Realmente no lo sé.

Definitivamente vale la pena, quizás incluso obligatorio, para el CSS aplicado a contenido generado por el usuario que puede ir en cualquier dirección (generalmente con dir="auto").

Además, aunque no pueda pensar en un ejemplo en este momento, a veces realmente quieres establecer explícitamente la propiedad left de algo independientemente de la dirección del diseño. En esos casos, rtlcss haría lo incorrecto, a menos que hayas hecho excepciones para eso de alguna manera.

1 me gusta

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

Los elementos <span> adicionales dentro de los elementos <td> son necesarios para que la tabla se renderice en el diseño deseado. En un contexto RTL, el pseudo-elemento ::before aparece a la derecha, por lo que si el td fuera RTL, el signo = que separa la clave y el valor aparecería en el extremo (lado derecho) de la fila de la tabla.

Básicamente, a veces necesitas anidar un elemento adicional para darle una dirección separada de su padre. Pero esto podría ser algo bueno dependiendo de tu perspectiva.

2 Me gusta

[cita=“sam, post:14, tema:367516”]

  • ¿Es posible llevar nuestro CSS a un estado en el que la herramienta rtlcss ya no sea necesaria?
  • ¿Vale la pena?
  • ¿Existe un estado intermedio saludable?
    [/cita]

No creo que valga la pena el esfuerzo de hacer una actualización completa de nuestro CSS en el núcleo, plugins y temas solo para eliminar nuestra dependencia de rtlcss. Un paso intermedio saludable podría ser usar CSS independiente de la dirección para áreas que contienen contenido generado por el usuario, como publicaciones y biografías, y que para todo lo demás rtlcss haga su trabajo.

3 Me gusta

Este tema fue cerrado automáticamente después de 14 horas. Ya no se permiten nuevas respuestas.