iOS application, we're to display news, coming from server. UIlabel is used
Apple are using "Unicode Bidirectional Algorithm" to present text. If the first character in a string is LTR the algorithm treat the presentation of the rest of the string as LTR. If you know in advance the language of the string RTL you can use the unicode \u200F and \u202c to force the RTL alignment.
Objective-C
[NSString stringWithFormat:@"\u200F%@\u202c", @"your string with RTL content"]
[NSString stringWithFormat:@"\u200E%@\u202c", @"your string with LTR content"]
Swift
String(format: "\u200F%@\u202c", "your string with RTL content")
String(format: "\u200E%@\u202c", "your string with LTR content")
Here is @Pichirichi solution for swift 5.2 :
"\u{200F}\("your string with RTL content")\u{202c}"
"u200E\("your string with LTR content")\u{202c}"
Swift 5:
extension String {
func forceUnicodeRTL() -> String {
return "\u{200F}\(self)\u{200E}"
}
}
"arabic text \u200E english text \u200F arabic text \u200E english text"
Solved the issue
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With