aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorDan Zivkovic <zivkovic@google.com>2015-02-12 15:42:25 -0800
committerDan Zivkovic <zivkovic@google.com>2015-02-12 15:42:25 -0800
commitcf84f8ce0c65923dc9a66e386c17ab9de338accf (patch)
tree8252bb3c1fcb03d3c684bd673c91e6242804c3d8 /java
parent98596e51a1ec262bd0f90154e156928e1458d4fc (diff)
downloadlatinime-cf84f8ce0c65923dc9a66e386c17ab9de338accf.tar.gz
latinime-cf84f8ce0c65923dc9a66e386c17ab9de338accf.tar.xz
latinime-cf84f8ce0c65923dc9a66e386c17ab9de338accf.zip
Switch from script to language codes.
Unfortunately, our Locale objects don't always have a script code. But we can get almost the same functionality by specifying script codes for some languages, and defaulting the rest to Latin. Change-Id: Id81ff67bf44c84f44707a2e167c2787c60c6ecee
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ScriptUtils.java56
1 files changed, 29 insertions, 27 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
index b6d959b81..4679f7814 100644
--- a/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ScriptUtils.java
@@ -46,29 +46,30 @@ public class ScriptUtils {
public static final int SCRIPT_TELUGU = 16;
public static final int SCRIPT_THAI = 17;
- private static final TreeMap<String, Integer> mIso15924toImeScriptCode;
+ private static final TreeMap<String, Integer> mLanguageCodeToScriptCode;
static {
- mIso15924toImeScriptCode = new TreeMap<>();
- mIso15924toImeScriptCode.put("Arab", SCRIPT_ARABIC);
- mIso15924toImeScriptCode.put("Armn", SCRIPT_ARMENIAN);
- mIso15924toImeScriptCode.put("Beng", SCRIPT_BENGALI);
- mIso15924toImeScriptCode.put("Cyrl", SCRIPT_CYRILLIC);
- mIso15924toImeScriptCode.put("Deva", SCRIPT_DEVANAGARI);
- mIso15924toImeScriptCode.put("Geor", SCRIPT_GEORGIAN);
- mIso15924toImeScriptCode.put("Grek", SCRIPT_GREEK);
- mIso15924toImeScriptCode.put("Hebr", SCRIPT_HEBREW);
- mIso15924toImeScriptCode.put("Knda", SCRIPT_KANNADA);
- mIso15924toImeScriptCode.put("Khmr", SCRIPT_KHMER);
- mIso15924toImeScriptCode.put("Laoo", SCRIPT_LAO);
- mIso15924toImeScriptCode.put("Latn", SCRIPT_LATIN);
- mIso15924toImeScriptCode.put("Mlym", SCRIPT_MALAYALAM);
- mIso15924toImeScriptCode.put("Mymr", SCRIPT_MYANMAR);
- mIso15924toImeScriptCode.put("Sinh", SCRIPT_SINHALA);
- mIso15924toImeScriptCode.put("Taml", SCRIPT_TAMIL);
- mIso15924toImeScriptCode.put("Telu", SCRIPT_TELUGU);
- mIso15924toImeScriptCode.put("Thai", SCRIPT_THAI);
+ mLanguageCodeToScriptCode = new TreeMap<>();
+ mLanguageCodeToScriptCode.put("", SCRIPT_LATIN); // default
+ mLanguageCodeToScriptCode.put("ar", SCRIPT_ARABIC);
+ mLanguageCodeToScriptCode.put("hy", SCRIPT_ARMENIAN);
+ mLanguageCodeToScriptCode.put("bn", SCRIPT_BENGALI);
+ mLanguageCodeToScriptCode.put("bg", SCRIPT_CYRILLIC);
+ mLanguageCodeToScriptCode.put("sr", SCRIPT_CYRILLIC);
+ mLanguageCodeToScriptCode.put("ru", SCRIPT_CYRILLIC);
+ mLanguageCodeToScriptCode.put("ka", SCRIPT_GEORGIAN);
+ mLanguageCodeToScriptCode.put("el", SCRIPT_GREEK);
+ mLanguageCodeToScriptCode.put("he", SCRIPT_HEBREW);
+ mLanguageCodeToScriptCode.put("km", SCRIPT_KHMER);
+ mLanguageCodeToScriptCode.put("lo", SCRIPT_LAO);
+ mLanguageCodeToScriptCode.put("ml", SCRIPT_MALAYALAM);
+ mLanguageCodeToScriptCode.put("my", SCRIPT_MYANMAR);
+ mLanguageCodeToScriptCode.put("si", SCRIPT_SINHALA);
+ mLanguageCodeToScriptCode.put("ta", SCRIPT_TAMIL);
+ mLanguageCodeToScriptCode.put("te", SCRIPT_TELUGU);
+ mLanguageCodeToScriptCode.put("th", SCRIPT_THAI);
}
+
/*
* Returns whether the code point is a letter that makes sense for the specified
* locale for this spell checker.
@@ -179,15 +180,16 @@ public class ScriptUtils {
/**
* @param locale spell checker locale
- * @return internal Latin IME script code that maps to an ISO 15924 script code
- * {@see http://unicode.org/iso15924/iso15924-codes.html}
+ * @return internal Latin IME script code that maps to a language code
+ * {@see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes}
*/
public static int getScriptFromSpellCheckerLocale(final Locale locale) {
- String isoScriptCode = locale.getScript();
- Integer imeScriptCode = mIso15924toImeScriptCode.get(isoScriptCode);
- if (imeScriptCode == null) {
- throw new RuntimeException("Unsupported ISO 15924 code: " + isoScriptCode);
+ String language = locale.getLanguage();
+ Integer script = mLanguageCodeToScriptCode.get(language);
+ if (script == null) {
+ // Default to Latin.
+ script = mLanguageCodeToScriptCode.get("");
}
- return imeScriptCode;
+ return script;
}
}