summaryrefslogtreecommitdiffstats
path: root/core/java/com
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2015-06-02 16:50:14 -0700
committerYohei Yukawa <yukawa@google.com>2015-06-02 17:09:50 -0700
commit92280cd309b0f5967dd253280962d8581844db89 (patch)
tree5f71fb2d687bf63b39a60c7f430cafa898bcc73d /core/java/com
parentc5ff0020a2467e0b7aed590d790b5a1b4b082f56 (diff)
downloadframeworks_base-92280cd309b0f5967dd253280962d8581844db89.zip
frameworks_base-92280cd309b0f5967dd253280962d8581844db89.tar.gz
frameworks_base-92280cd309b0f5967dd253280962d8581844db89.tar.bz2
Convert subtypes whose locale is "tl" to "fil".
On Android, "tl" is a historic hack for what should really be "fil". Now that we properly support 3-letter language codes, we should be using "fil" throughout. Given this historical usage, IMEs that really want to support Tagalog (and not Filipino) should use the ISO-639-3 code for Tagalog, which is "tgl". For backward compatibility reasons, this CL uses the similar approach to I26e3aa0333aa3c76c80a3c1c9090cc2b368c8e10. InputMethodSubtype.getLocale() continues to return the "locale" string parameter passed to the constructor as is, but in the Android framework we do normalizations/conversions whenever we need a valid ISO-639-3 code. In I26e3aa0333aa3c76c80a3c1c9090cc2b368c8e10, we rely on the conversion in the Locale constructor. In this CL, we do replace "tl" with "fil" by ourselves. This CL also adds InputMethodSubtype#getLocaleObject() a hidden API so that we can start relying on the Locale object at least in the framework. This CL is based on the investigation by Narayan Kamath and his patch. Bug: 20696126 Change-Id: I94f203bddceb9c87710cb187cc3cc0ee6d9092a5
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/internal/inputmethod/InputMethodUtils.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/core/java/com/android/internal/inputmethod/InputMethodUtils.java b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
index 06bdb24..042db71 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodUtils.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
@@ -379,6 +379,14 @@ public class InputMethodUtils {
// The length of localeStr is guaranteed to always return a 1 <= value <= 3
// because localeStr is not empty.
if (localeParams.length == 1) {
+ if (localeParams.length >= 1 && "tl".equals(localeParams[0])) {
+ // Convert a locale whose language is "tl" to one whose language is "fil".
+ // For example, "tl_PH" will get converted to "fil_PH".
+ // Versions of Android earlier than Lollipop did not support three letter language
+ // codes, and used "tl" (Tagalog) as the language string for "fil" (Filipino).
+ // On Lollipop and above, the current three letter version must be used.
+ localeParams[0] = "fil";
+ }
return new Locale(localeParams[0]);
} else if (localeParams.length == 2) {
return new Locale(localeParams[0], localeParams[1]);
@@ -397,7 +405,7 @@ public class InputMethodUtils {
for (int i = 0; i < N; ++i) {
final InputMethodSubtype subtype = imi.getSubtypeAt(i);
if (checkCountry) {
- final Locale subtypeLocale = constructLocaleFromString(subtype.getLocale());
+ final Locale subtypeLocale = subtype.getLocaleObject();
if (subtypeLocale == null ||
!TextUtils.equals(subtypeLocale.getLanguage(), locale.getLanguage()) ||
!TextUtils.equals(subtypeLocale.getCountry(), locale.getCountry())) {