Look at this example from a set of blocks I did using CheckUser on fawiki today.
And compare it with this:
The language is Persian, which is right-to-left. The comma character is ، and should appear to the left of each username, without any spaces to its right, and with a single space to its left.
Top view is the current output. Bottom view is when I manually applied unicode-bidi: isolate CSS rule to all of the <a> tags for those usernames listed.
That text is generated using the checkuser-block-success message. The comma separated list itself comes from applying Language::listToText() to an array of HTML tags (see code). What listToText() currently does is to just glue the items together using a localized comma except for the last two items which are glued using the localized "and" phrase (see current code). What is missing is to ensure that the individual elements are wrapped inside a tag that has the correct unicode-bidi attribute.
This is a major i18n issue, impacting MW core and all extensions, not just CheckUser. The key questions are: should listToText() wrap the individual elements, or should we hunt down all usages and make sure that those pass in an array of already-wrapped HTML tags. Also, where should the CSS be?