hnaseri
(Hosein Naseri)
Fevereiro 9, 2022, 10:15am
1
Tenho um fórum em idioma rtl. Recentemente, as citações mostram texto em direção ltr em vez de rtl.
pmusaraj
(Penar Musaraj)
Fevereiro 9, 2022, 11:32am
2
Você está usando a versão mais recente do Discourse? Não consigo reproduzir isso localmente ao mudar meu idioma para árabe, por exemplo.
hnaseri
(Hosein Naseri)
Fevereiro 9, 2022, 1:40pm
3
Acabei de atualizar para a versão mais recente. Isso não corrigiu o problema.
pmusaraj
(Penar Musaraj)
Fevereiro 9, 2022, 3:41pm
4
Isso acontece em várias postagens ou apenas naquela específica? Você também já tentou no modo de segurança?
1 curtida
hnaseri
(Hosein Naseri)
Fevereiro 10, 2022, 6:44am
5
Sim, acontece em várias postagens. E também acontece no modo de segurança.
1 curtida
pmusaraj
(Penar Musaraj)
Fevereiro 10, 2022, 7:58am
6
Você pode postar um link para o seu site para que possamos dar uma olhada?
pmusaraj
(Penar Musaraj)
Fevereiro 10, 2022, 9:40am
8
Obrigado, pelo que vi no código-fonte, as citações lá têm um atributo dir="ltr". Imagino que você tenha habilitado a configuração mixed text direction. Na verdade, consigo reproduzir seu problema quando habilito essa configuração localmente.
Não tenho certeza se isso é “funciona como projetado” ou se há um bug pequeno/grande aqui. @Osama , você está familiarizado com esta parte do aplicativo?
3 curtidas
Osama
Fevereiro 10, 2022, 9:48am
9
Certamente parece que temos um bug aqui. Eu esperaria que a direção da citação correspondesse à direção do site. Vou investigar e ver o que está causando isso!
4 curtidas
Osama
Fevereiro 20, 2022, 8:07pm
11
Depois de investigar isso, estou um pouco confuso, você tem certeza de que isso costumava renderizar corretamente? Porque não consegui ver nada no código para lidar com texto RTL citado com um nome de usuário em uma linguagem LTR. Eu também tentei uma versão do Discourse de mais de um ano atrás e a citação também não renderizou corretamente.
De qualquer forma, aqui está um PR para lidar com isso corretamente:
main ← fix/quoted-rtl-text
opened 08:02PM - 20 Feb 22 UTC
Meta topic: https://meta.discourse.org/t/rtl-direction-is-broken-in-quotes/21763… 9?u=osama.
Posts in Discourse are by default always rendered in the same direction as the rest of site, for example if the site is RTL, a post in that site is always rendered RTL even if it's made of an LTR language entirely. However, this behavior can be changed by enabling the `support mixed text direction` site setting which makes our posts rendering engine consider each "paragraph" in the post and apply an appropriate direction (using the `dir` attribute) on it based on its content/language.
I put paragraph in quotes because technically we only loop through the immediate children of the HTML element that contains the post cooked HTML and do this direction check on them. Most of the time the immediate children are actually paragraphs, but not always. The direction of an element is determined by checking its `textContent` property against a regular expression that checks all characters are RTL characters and based on the regular expression result the `dir` attribute is set on the element.
This technique doesn't work so well on quotes because they may contain multiple paragraphs which may be in different languages/directions. For example:

In this screenshot, the site's language is Arabic (RTL language) and the `support mixed text direction` setting is enabled. The paragraphs outside the quotes are rendered as expected with the right direction, however the paragraphs within the quote aren't; both the Arabic and English paragraphs are rendered LTR. Additionally, the avatar in the quote is misplaced; it should always be on the right hand site in RTL sites.
The reason for this is that when we're determining the direction for the quote, it's considered as one element and the direction is set on the whole quote. But for complex quotes like the one above, we need to be more surgical and apply direction on elements within the quote.
This PR adds special handling for quotes to ensure that:
* the quote title (the avatar plus the chevron and arrow) always match the site direction
* each immediate paragraph (`<p>` elements) under `<blockquote>` in the quote gets a direction based on its content.
Screenshot of the above quote with this PR:

5 curtidas
pmusaraj
(Penar Musaraj)
Fechado
Fevereiro 28, 2022, 7:00am
12
Este tópico foi fechado automaticamente após 3 dias. Novas respostas não são mais permitidas.