Search code examples
androidright-to-left

android determine if device is in right to left language/layout


Is there a way to determine if the device is in a right to left language (something like Arabic) as opposed to something that's left to right (English)?

Something compatible with older API levels (down to 10) is necessary

SOLUTION

i ended up using the xml method in the accepted answer. Farther down the line, i also added the code indicated here for instances where I didn't have access to getResources()

Identifying RTL language in Android

more info

This question still gets a lot of traffic; something else I wanted to point out: When I originally asked this I think it was partially to help address showing different pointing chevrons in RTL vs LTR -- another slick way of accomplishing this is by placing drawable resources in the standard and ldrtl directories -- means no code required to determine which one to show!


Solution

  • You could create a values-ldrtl folder with a xml file called isrighttoleft.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="is_right_to_left">true</bool>
    </resources>
    

    and in your values folder the same file with:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="is_right_to_left">false</bool>
    </resources>
    

    And finally in Code:

    boolean isRightToLeft = getResources().getBoolean(R.bool.is_right_to_left);
    

    The values-ldrtl will only be used on a device where the specific settings (e. g. Language) are right-to-left-read languages.