Android RTL翻译与占位符

3

我想编辑我的Android strings.xml文件以添加阿拉伯语翻译,但是遇到了问题。例如,我有以下内容:

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

当我输入像%1$s这样的占位符时,带有占位符的字符串也会混淆。
正确的方法是什么?谢谢。
1个回答

4

在双向文本字符串中,占位符(ascii)很棘手。如果您知道这个%1$s最终将被阿拉伯语中的名称替换,那么它是可管理的;但如果替换可以是英语或混合文本,则需要长时间仔细的QA来检查所有特殊情况。

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

官方指南https://developer.android.com/studio/write/translations-editor.html非常详细地描述了此编辑器,但它忽略了一个小技巧,即使用View/BiDi Text Direction菜单。要使用阿拉伯字符串,请将其设置为从右到左。

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

bottom text

但是当你点击翻译的 ... 按钮时,你会得到从右到左的翻译:

translation pop-up

现在,您可以理解当占位符被实际数据替换后的样子。

你能在回答中提到如何在使用RTL字符串资源时处理浮点数吗?我有一个文本资源:<string name="points">%1$.2f نقاط</string> - theAndDev
浮点格式应该没什么特别的。你的例子看起来合法,但你确定用户想要“欧洲”数字而不是印度数字吗? - Alex Cohn
2
我的担心是占位符是否也应该是RTL,例如:f2.$1%或者像现在一样是LTR?另外,回答你的问题,当我将上述字符串资源放置在阿拉伯语strings.xml中时,它自动转换为阿拉伯数字系统。 - theAndDev
占位符本身应该是从左到右的,就像你第一个例子中所示。平台为您处理数字替换很好,但要小心:在理想的世界中,这实际上应该取决于Locale。一些阿拉伯国家喜欢这些数字,而其他国家(如摩洛哥)则不喜欢。 - Alex Cohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接