diff options
author | 2016-03-04 22:55:31 +0000 | |
---|---|---|
committer | 2016-03-04 22:55:31 +0000 | |
commit | 091ffff370314a865a1c025a39f0dc6289af3cbf (patch) | |
tree | 6c526359fd8db13118f586fedb7c21b5ba0c3280 /java/src | |
parent | e1a9d7ae6715fba1da71d536013e48b9b7e6f9f0 (diff) | |
parent | 31a3f07c2117180df524d6b2e78089897c8ea807 (diff) | |
download | latinime-091ffff370314a865a1c025a39f0dc6289af3cbf.tar.gz latinime-091ffff370314a865a1c025a39f0dc6289af3cbf.tar.xz latinime-091ffff370314a865a1c025a39f0dc6289af3cbf.zip |
Map "sr-Latn" to "sr_ZZ" for internal use.
am: 31a3f07c21
* commit '31a3f07c2117180df524d6b2e78089897c8ea807':
Map "sr-Latn" to "sr_ZZ" for internal use.
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java b/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java index 71aaf5e01..cc589229e 100644 --- a/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java +++ b/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java @@ -18,14 +18,17 @@ package com.android.inputmethod.latin; import static com.android.inputmethod.latin.common.Constants.Subtype.KEYBOARD_MODE; +import android.os.Build; import android.util.Log; import android.view.inputmethod.InputMethodSubtype; +import com.android.inputmethod.compat.BuildCompatUtils; import com.android.inputmethod.compat.InputMethodSubtypeCompatUtils; import com.android.inputmethod.latin.common.Constants; import com.android.inputmethod.latin.common.LocaleUtils; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; +import java.util.HashMap; import java.util.Locale; import javax.annotation.Nonnull; @@ -40,14 +43,29 @@ import javax.annotation.Nullable; public class RichInputMethodSubtype { private static final String TAG = RichInputMethodSubtype.class.getSimpleName(); + private static final HashMap<Locale, Locale> sLocaleMap = initializeLocaleMap(); + private static final HashMap<Locale, Locale> initializeLocaleMap() { + final HashMap<Locale, Locale> map = new HashMap<>(); + if (BuildCompatUtils.EFFECTIVE_SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + // Locale#forLanguageTag is available on API Level 21+. + // TODO: Remove this workaround once when we become able to deal with "sr-Latn". + map.put(Locale.forLanguageTag("sr-Latn"), new Locale("sr_ZZ")); + } + return map; + } + @Nonnull private final InputMethodSubtype mSubtype; @Nonnull private final Locale mLocale; + @Nonnull + private final Locale mOriginalLocale; public RichInputMethodSubtype(@Nonnull final InputMethodSubtype subtype) { mSubtype = subtype; - mLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); + mOriginalLocale = InputMethodSubtypeCompatUtils.getLocaleObject(mSubtype); + final Locale mappedLocale = sLocaleMap.get(mOriginalLocale); + mLocale = mappedLocale != null ? mappedLocale : mOriginalLocale; } // Extra values are determined by the primary subtype. This is probably right, but @@ -128,6 +146,11 @@ public class RichInputMethodSubtype { return mLocale; } + @Nonnull + public Locale getOriginalLocale() { + return mOriginalLocale; + } + public boolean isRtlSubtype() { // The subtype is considered RTL if the language of the main subtype is RTL. return LocaleUtils.isRtlLanguage(mLocale); |