Неправильное понимание: Цифры на языках RTL, таких как ARABIC, должны быть написаны из RTL с арабскими цифрами, чтобы избежать каких-либо проблем, например:"SMS رسالة".
Проблема и решение: Смешивание языков с более чем одним направлением требуется больше шагов, вам нужно сообщить системе "эй, это RTLслово, добавь как это в последовательность ". Так что вам может потребоваться сделать это неявно , то есть:
\u200f + تم إرسال رسالة نصية إلى + number
Рассмотрим StringBuilder: Разработчику очень больно разрабатывать что-то дляЯзык RTL с использованием плюс (+) нотации, это очень запутанно и подвержено ошибкам.
Лучший способ:
builder.append("\u061C").append(" تم إرسال رسالة نصية لـ").append("\u200E").append("+0123456789")
Рассмотрим BidiFormatter: Класс утилит для форматирования текста для отображения в потенциально противоположном контексте без искажений
Пример:
String text = "{0} تم إرسال رسالة نصية لـ ";
String phone = BidiFormatter.getInstance().unicodeWrap("+961 01 234 567");
String result = MessageFormat.format(text,phone);
Теперь result
будет отформатировано правильно.
Дополнительные примеры работы BidiFormatter.