Android 带占位符的 RTL 翻译

Android RTL translation with placeholders

我正在尝试使用阿拉伯语翻译编辑我的 android strings.xml 文件。但是,我遇到了问题。例如,我有这样的东西:

<string name="test">اختبار</string>

当我输入类似 %1$s 的内容来添加占位符时,带有占位符的字符串也被混淆了。

正确的做法是什么?谢谢

BiDi 字符串中的占位符 (ascii) 很棘手。如果你知道这个 %1$s 最终会被一个阿拉伯语的名字代替,这是可以控制的;但如果替换可以是英文或混合文本,则需要一个漫长而仔细的 QA 来检查所有特殊情况。

不要尝试在 Android Studio 文本编辑器中为文件 res/values-ar/strings.xml 编辑阿拉伯语文本;请改用翻译编辑器。

官方指南https://developer.android.com/studio/write/translations-editor.html对这个编辑器的描述非常详细,但是它遗漏了一个小技巧是[=41的使用=] 文本方向 菜单。要使用阿拉伯字符串,您需要将其设置为从右到左。

这不会影响编辑器中的阿拉伯语栏,甚至不会影响翻译在底部文本框中的显示方式:

但是当你点击...按钮进行翻译时,你会得到RTL的翻译:

现在您可以了解用实际数据替换占位符时的外观了。