Merge "[IL92] Straighten out showSuggestionStripWithTypedWord"
diff --git a/java/res/values-ne-rNP/strings.xml b/java/res/values-ne-rNP/strings.xml
index c4792dc..168806e 100644
--- a/java/res/values-ne-rNP/strings.xml
+++ b/java/res/values-ne-rNP/strings.xml
@@ -76,7 +76,7 @@
     <string name="gesture_floating_preview_text" msgid="4443240334739381053">"गतिशील फ्लोटिङ पूर्वावलोकन"</string>
     <string name="gesture_floating_preview_text_summary" msgid="4472696213996203533">"इशारा गर्दा सुझाव दिइएको शब्द हेर्नुहोस्"</string>
     <string name="gesture_space_aware" msgid="2078291600664682496">"वाक्यांश इशारा"</string>
-    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"इशारा सत्र दैरान space दिखिल गर्न space key मा ग्लाइडि गर्नुहोस्"</string>
+    <string name="gesture_space_aware_summary" msgid="4371385818348528538">"इशाराको बखतमा स्पेस कुञ्जीमा ग्लाईडिंग द्वारा आगत खाली ठाउँहरू"</string>
     <string name="added_word" msgid="8993883354622484372">"<xliff:g id="WORD">%s</xliff:g> : बचत गरियो"</string>
     <string name="spoken_use_headphones" msgid="896961781287283493">"हेडसेट प्लग इन गर्नुहोस्"</string>
     <string name="spoken_current_text_is" msgid="2485723011272583845">"वर्तमान पाठ %s हो"</string>
diff --git a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
index fdbe81a..fb1be30 100644
--- a/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtils.java
@@ -25,9 +25,11 @@
 import android.util.Log;
 import android.view.inputmethod.InputMethodSubtype;
 
+import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.DictionaryFactory;
 import com.android.inputmethod.latin.R;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Locale;
 
@@ -334,4 +336,23 @@
         final Locale locale = getSubtypeLocale(subtype);
         return StringUtils.capitalizeFirstCodePoint(locale.getLanguage(), locale);
     }
+
+    // TODO: Get this information from the framework instead of maintaining here by ourselves.
+    // Sorted list of known Right-To-Left language codes.
+    private static final String[] SORTED_RTL_LANGUAGES = {
+        "ar", // Arabic
+        "fa", // Persian
+        "iw", // Hebrew
+    };
+    static {
+        Arrays.sort(SORTED_RTL_LANGUAGES);
+    }
+
+    // TODO: Remove @UsedForTesting annotation.
+    @UsedForTesting
+    public static boolean isRtlLanguage(final InputMethodSubtype subtype) {
+        final Locale locale = getSubtypeLocale(subtype);
+        final String language = locale.getLanguage();
+        return Arrays.binarySearch(SORTED_RTL_LANGUAGES, language) >= 0;
+    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
index 939dedb..25f57eb 100644
--- a/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/SubtypeLocaleUtilsTests.java
@@ -101,7 +101,6 @@
                 SubtypeLocaleUtils.NO_LANGUAGE, "azerty", null);
         ZZ_PC = AdditionalSubtypeUtils.createAdditionalSubtype(
                 SubtypeLocaleUtils.NO_LANGUAGE, "pcqwerty", null);
-
     }
 
     public void testAllFullDisplayName() {
@@ -423,4 +422,27 @@
     public void testAdditionalSubtypeForSpacebarInFrench() {
         testsAdditionalSubtypesForSpacebar.runInLocale(mRes, Locale.FRENCH);
     }
+
+    public void testIsRtlLanguage() {
+        // Known Right-to-Left language subtypes.
+        final InputMethodSubtype ARABIC = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("ar", "arabic");
+        assertNotNull("Arabic", ARABIC);
+        final InputMethodSubtype FARSI = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("fa", "farsi");
+        assertNotNull("Farsi", FARSI);
+        final InputMethodSubtype HEBREW = mRichImm
+                .findSubtypeByLocaleAndKeyboardLayoutSet("iw", "hebrew");
+        assertNotNull("Hebrew", HEBREW);
+
+        for (final InputMethodSubtype subtype : mSubtypesList) {
+            final String subtypeName = SubtypeLocaleUtils
+                    .getSubtypeDisplayNameInSystemLocale(subtype);
+            if (subtype.equals(ARABIC) || subtype.equals(FARSI) || subtype.equals(HEBREW)) {
+                assertTrue(subtypeName, SubtypeLocaleUtils.isRtlLanguage(subtype));
+            } else {
+                assertFalse(subtypeName, SubtypeLocaleUtils.isRtlLanguage(subtype));
+            }
+        }
+    }
 }