FS#3746 - interesting handling of mixtures of rtl and ltr languages

Attached to Project: OpenTTD
Opened by Ingo von Borstel (planetmaker) - Wednesday, 07 April 2010, 22:37 GMT
Last edited by Remko Bijker (Rubidium) - Thursday, 21 October 2010, 20:12 GMT
Type Bug
Category Interface
Status Closed
Assigned To No-one
Operating System All
Severity Very Low
Priority Normal
Reported Version 1.0.0
Due in Version 1.1.0
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Clients can chose any language, thus independently an rtl or ltr language, thus nicknames are available in both rtl and ltr. The handling of rtl nicks in ltr languages is bad as it breaks the ltr strings. Probably the same applies in reverse. Attached the screenshot where I set an arabic nickname on one client and the console of a ltr (German) server where this client joins. Note the broken join message for the last client which is the arabic nickname.
This task depends upon

Closed by  Remko Bijker (Rubidium)
Thursday, 21 October 2010, 20:12 GMT
Reason for closing:  Fixed
Additional comments about closing:  In r21004
Comment by Ingo von Borstel (planetmaker) - Thursday, 08 April 2010, 07:20 GMT
Just to clearify a bit what I tried to say: a rtl nickname (or sub string, could probably be town name and alike, too) should not change the word order of the ltr string it is inserted into. See also the translation bug report:
Comment by Remko Bijker (Rubidium) - Thursday, 08 April 2010, 09:43 GMT
  • Field changed: Status (New → Confirmed)
I've seen this happening, but I'm far from sure how to prevent such things from happening besides adding "don't break my ltr-ness" markers to the strings.

Maybe, just maybe we can use the ltr property to automagically add those markers. But it's not really that important as it's only the drawing that does this; the raw string still is "foo bar (RTLtext)".
Comment by Ammler (Ammler) - Thursday, 04 November 2010, 21:19 GMT
this fix breaks chat bridge with Autopilot, current workaround is to revert r21004, 6 & 7

Is it possible to use the first "control char" for rtl languages only or any other possibility?
Comment by Remko Bijker (Rubidium) - Thursday, 04 November 2010, 21:25 GMT
The change is *especially* needed for left-to-right languages, like German/English, where Arabic/Hebrew client names mess up the printing of the text. So removing these characters will, in effect, reintroduce the bug. Going for another approach implies using one of the other text direction control characters which undoubtedly cause the same issue for you.

Even then, if you compile without ICU the character shouldn't be in the output at all.