notGeek
notGeek

Reputation: 1528

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

Upvotes: 3

Views: 2046

Answers (1)

Alex Cohn
Alex Cohn

Reputation: 57203

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.

Upvotes: 4

Related Questions