hnaseri
(Hosein Naseri)
Février 9, 2022, 10:15
1
J’ai un forum dans une langue rtl. Récemment, les citations affichent le texte dans la direction ltr au lieu de rtl.
pmusaraj
(Penar Musaraj)
Février 9, 2022, 11:32
2
Êtes-vous sur la dernière version de Discourse ? Je ne peux pas le reproduire localement en passant ma locale à l’arabe, par exemple.
hnaseri
(Hosein Naseri)
Février 9, 2022, 1:40
3
Je viens de mettre à jour vers la dernière version. Cela n’a pas résolu le problème.
pmusaraj
(Penar Musaraj)
Février 9, 2022, 3:41
4
Cela se produit-il sur plusieurs publications ou seulement sur celle-ci ? Avez-vous également essayé en mode sans échec ?
1 « J'aime »
hnaseri
(Hosein Naseri)
Février 10, 2022, 6:44
5
Oui, cela se produit dans plusieurs publications. Et cela se produit également en mode sans échec.
1 « J'aime »
pmusaraj
(Penar Musaraj)
Février 10, 2022, 7:58
6
Pouvez-vous publier un lien vers votre site afin que nous puissions y jeter un coup d’œil ?
hnaseri
(Hosein Naseri)
Février 10, 2022, 8:26
7
1 « J'aime »
pmusaraj
(Penar Musaraj)
Février 10, 2022, 9:40
8
Merci, d’après le code source, les guillemets ont un attribut dir="ltr". Je suppose que vous avez activé le paramètre mixed text direction. En fait, je peux reproduire votre problème lorsque j’active ce paramètre localement.
Je ne suis pas sûr s’il s’agit d’un « fonctionnement prévu » ou s’il y a un bug mineur/majeur ici. @Osama , connaissez-vous cette partie de l’application ?
3 « J'aime »
Osama
Février 10, 2022, 9:48
9
Il semble bien que nous ayons un bug ici. Je m’attendrais à ce que la direction de la citation corresponde à la direction du site. Je vais creuser pour voir ce qui cause cela !
4 « J'aime »
Osama
Février 20, 2022, 8:07
11
Après avoir examiné cela, je suis un peu confus. Êtes-vous sûr que cela s’affichait correctement auparavant ? Parce que je n’ai rien vu dans le code pour gérer le texte cité de droite à gauche avec un nom d’utilisateur dans une langue de gauche à droite. J’ai également essayé une version de Discourse datant de plus d’un an et la citation ne s’affichait pas correctement non plus.
Quoi qu’il en soit, voici une PR pour gérer cela correctement :
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 « J'aime »
pmusaraj
(Penar Musaraj)
A fermé ce sujet ()
Février 28, 2022, 7:00
12
Ce sujet a été automatiquement fermé après 3 jours. Les nouvelles réponses ne sont plus autorisées.