Hi all, I'm fixing bug https://bugzilla.novell.com/show_bug.cgi?id=583209 the problem is with displaying a bidirectional text. The dialog label contains Arabic traslation of "Joystick Configuration" which is written right-to-left (RTL) plus normal ASCII text with sound card model (written in LTR direction): sformat(_("Joystick Configuration - %1 (snd-card-%2)"), cardname, card_id); The problem is when the text is rendered on the screen the brackets are broken. See the attached screen shots (there is English and Arabic version, the last screenshot is fixed Arabic). It's caused by the fact that punctuation characters in bidirectional text are "weak". I.e. their direction depends on the direction of the surrounding text and that can cause troubles when one side is LTR and the other one is RTL. (See http://en.wikipedia.org/wiki/Bi-directional_text#Unicode_support) Fortunately Unicode has special controlling characters to explicitly set direction for one or more characters. To fix the problem with the string above I have added new String::ForceLTRPunctuation() function which forces LTR direction on some punctuation characters (,.()-) in the string using "LEFT-TO-RIGHT MARK" Unicode controlling character. See the result in the last attached screenshot. Another solution would be to directly fix the Arabic translation so it contains the LTR mark in it. But I'm not sure if it is possible to put binary values into translated pot file via some escape sequence... And some strings might be read from an external source and might not be marked for translation, so we need to fix them on the fly with the above function anyway... Because I'm not an I18N expert I'm asking here for review of this fix. I think the fix cannot be applied generally to any displayed text, sometimes the default direction might be desired and this would break it. The patch is attached for review. -- Ladislav Slezák Appliance department / YaST Developer Lihovarská 1060/12 190 00 Prague 9 / Czech Republic tel: +420 284 028 960 lslezak@suse.com SUSE