Search code examples
androidandroid-studioright-to-left

Android RTL translation with placeholders


I’m trying to edit my android strings.xml file with arabic translations. However, I’m having issues. For example, I have something like this:

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

When I type something like %1$s to add a placeholder, the string with the placeholder is also mixed up.

What’s the right approach to do this? Thanks


Solution

  • Placeholders (ascii) in BiDi strings are tricky. If you know that this %1$s will eventually be substituted by a name in Arabic, it's manageable; but if the substitution can be English or mixed text, you need a long and careful QA to check all special cases.

    Don't try to edit Arabic text in Android Studio text editor for file res/values-ar/strings.xml; use the Translations Editor instead.

    The official guide https://developer.android.com/studio/write/translations-editor.html describes the this editor in great detail, but one little trick that it misses is the use of View/BiDi Text Direction menu. To work with Arabic strings, you want to set it to Right-to-Left.

    This will not effect the Arabic column in your Editor, and not even the way the translation is displayed in the text box at the bottom:

    bottom text

    But when you click the ... button for translation, you will get the translation in RTL:

    translation pop-up

    Now you can understand how your placeholder(s) will look when replaced with actual data.