我在阿拉伯语本地资源中有以下字符串资源
<string name="status_created_seen_closed_text">"%3$s التعليمات في %2$s قام %1$s"</string>
我正在使用BidiFormatter
处理RTL和LTL混合文本:
text = String.format( context.getString(R.string.status_created_seen_closed_text),
bidiFormatter.unicodeWrap(statusTimeline.getEmpName()),
bidiFormatter.unicodeWrap(TextUtils.getTranslatedStatus(context, StandardUtil.StatusType.valueOf(statusTimeline.getStatus().toLowerCase()))),
bidiFormatter.unicodeWrap(dateStr));
但是我得到的结果如下:
17 Dec,2018 06:22 PM التعليمات في بانشاء قام Khaled
如果单独考虑,似乎每个插入的文本都朝着正确的方向发展,但总的来说,阿拉伯文本似乎正朝英语方向插入。我的预期结果如下
17 Dec,2018 06:22 PM قام بانشاءالتعليمات في Khaled
已编辑:
它可以在Android M及更低版本上正常工作
答案 0 :(得分:0)
使用以下代码格式化字符串:
String.format("%s %s %s %s",
statusTimeline.getEmpName(),
context.getString(R.string.status_created_seen_closed_text),
dateStr,
TextUtils.getTranslatedStatus(context, StandardUtil.StatusType.valueOf(statusTimeline.getStatus().toLowerCase()))
);
并将您的字符串资源值更改为:
<string name="status_created_seen_closed_text"> قام بانشاءالتعليمات في</string>
我想它将解决问题。