Loading java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public final class KeyboardTextsSet { private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap(); public void setLocale(final Locale locale, final Context context) { final String language = locale.getLanguage(); mTextsTable = KeyboardTextsTable.getTextsTable(language); mTextsTable = KeyboardTextsTable.getTextsTable(locale); final Resources res = context.getResources(); final int referenceId = context.getApplicationInfo().labelRes; final String resourcePackageName = res.getResourcePackageName(referenceId); Loading java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java +196 −190 File changed.Preview size limit exceeded, changes collapsed. Show changes tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl +28 −22 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.internal; import com.android.inputmethod.latin.utils.CollectionUtils; import java.util.HashMap; import java.util.Locale; /** * !!!!! DO NOT EDIT THIS FILE !!!!! Loading @@ -44,19 +45,19 @@ import java.util.HashMap; public final class KeyboardTextsTable { // Name to index map. private static final HashMap<String, Integer> sNameToIndexesMap = CollectionUtils.newHashMap(); // Language to texts table map. private static final HashMap<String, String[]> sLanguageToTextsTableMap = // Locale to texts table map. private static final HashMap<String, String[]> sLocaleToTextsTableMap = CollectionUtils.newHashMap(); // TODO: Remove this variable after debugging. // Texts table to language maps. private static final HashMap<String[], String> sTextsTableToLanguageMap = // Texts table to locale maps. private static final HashMap<String[], String> sTextsTableToLocaleMap = CollectionUtils.newHashMap(); public static String getText(final String name, final String[] textsTable) { final Integer indexObj = sNameToIndexesMap.get(name); if (indexObj == null) { throw new RuntimeException("Unknown text name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); throw new RuntimeException("Unknown text name=" + name + " locale=" + sTextsTableToLocaleMap.get(textsTable)); } final int index = indexObj; final String text = (index < textsTable.length) ? textsTable[index] : null; Loading @@ -64,17 +65,24 @@ public final class KeyboardTextsTable { return text; } // Sanity check. if (index >= 0 && index < LANGUAGE_DEFAULT.length) { return LANGUAGE_DEFAULT[index]; if (index >= 0 && index < TEXTS_DEFAULT.length) { return TEXTS_DEFAULT[index]; } // Throw exception for debugging purpose. throw new RuntimeException("Illegal index=" + index + " for name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); + " locale=" + sTextsTableToLocaleMap.get(textsTable)); } public static String[] getTextsTable(final String language) { final String[] textsTable = sLanguageToTextsTableMap.get(language); return textsTable != null ? textsTable : LANGUAGE_DEFAULT; public static String[] getTextsTable(final Locale locale) { final String localeKey = locale.toString(); if (sLocaleToTextsTableMap.containsKey(localeKey)) { return sLocaleToTextsTableMap.get(localeKey); } final String languageKey = locale.getLanguage(); if (sLocaleToTextsTableMap.containsKey(languageKey)) { return sLocaleToTextsTableMap.get(languageKey); } return TEXTS_DEFAULT; } private static final String[] NAMES = { Loading @@ -85,16 +93,14 @@ public final class KeyboardTextsTable { private static final String EMPTY = ""; /* Default texts */ private static final String[] LANGUAGE_DEFAULT = { private static final String[] TEXTS_DEFAULT = { /* @DEFAULT_TEXTS@ */ }; /* @TEXTS@ */ // TODO: Use the language + "_" + region representation for the locale string key. // Currently we are dropping the region from the key. private static final Object[] LANGUAGES_AND_TEXTS = { private static final Object[] LOCALES_AND_TEXTS = { // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ /* @LANGUAGES_AND_TEXTS@ */ /* @LOCALES_AND_TEXTS@ */ }; static { Loading @@ -102,11 +108,11 @@ public final class KeyboardTextsTable { sNameToIndexesMap.put(NAMES[index], index); } for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { final String language = (String)LANGUAGES_AND_TEXTS[i]; final String[] textsTable = (String[])LANGUAGES_AND_TEXTS[i + 1]; sLanguageToTextsTableMap.put(language, textsTable); sTextsTableToLanguageMap.put(textsTable, language); for (int i = 0; i < LOCALES_AND_TEXTS.length; i += 2) { final String locale = (String)LOCALES_AND_TEXTS[i]; final String[] textsTable = (String[])LOCALES_AND_TEXTS[i + 1]; sLocaleToTextsTableMap.put(locale, textsTable); sTextsTableToLocaleMap.put(textsTable, locale); } } } tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -85,24 +85,24 @@ public final class JarUtils { }); } // The language is taken from string resource jar entry name (values-<language>/) // or {@link LocaleUtils#DEFAULT_LANGUAGE_NAME} for the default string resource // The locale is taken from string resource jar entry name (values-<locale>/) // or {@link LocaleUtils#DEFAULT_LOCALE_KEY} for the default string resource // directory (values/). public static String getLanguageFromEntryName(final String jarEntryName) { public static String getLocaleFromEntryName(final String jarEntryName) { final String dirName = jarEntryName.substring(0, jarEntryName.lastIndexOf('/')); final int pos = dirName.lastIndexOf('/'); final String parentName = (pos >= 0) ? dirName.substring(pos + 1) : dirName; final int languagePos = parentName.indexOf('-'); if (languagePos < 0) { final int localePos = parentName.indexOf('-'); if (localePos < 0) { // Default resource name. return LocaleUtils.DEFAULT_LANGUAGE_NAME; return LocaleUtils.DEFAULT_LOCALE_KEY; } final String language = parentName.substring(languagePos + 1); final int countryPos = language.indexOf("-r"); if (countryPos < 0) { return language; final String locale = parentName.substring(localePos + 1); final int regionPos = locale.indexOf("-r"); if (regionPos < 0) { return locale; } return language.replace("-r", "_"); return locale.replace("-r", "_"); } public static void close(final Closeable stream) { Loading tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java +9 −8 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import java.util.Locale; * for the make-keyboard-text tool. */ public final class LocaleUtils { public static final String DEFAULT_LANGUAGE_NAME = "DEFAULT"; public static final String NO_LANGUAGE_CODE = "zz"; public static final String NO_LANGUAGE_DISPLAY_NAME = "Alphabet"; public static final String DEFAULT_LOCALE_KEY = "DEFAULT"; public static final String NO_LANGUAGE_LOCALE_CODE = "zz"; public static final String NO_LANGUAGE_LOCALE_DISPLAY_NAME = "Alphabet"; private LocaleUtils() { // Intentional empty constructor for utility class. Loading @@ -48,7 +48,8 @@ public final class LocaleUtils { if (retval != null) { return retval; } String[] localeParams = localeStr.split("_", 3); final String[] localeParams = localeStr.split("_", 3); // TODO: Use JDK 7 Locale.Builder to handle a script name. if (localeParams.length == 1) { retval = new Locale(localeParams[0]); } else if (localeParams.length == 2) { Loading @@ -63,11 +64,11 @@ public final class LocaleUtils { } } public static String getLanguageDisplayName(final String language) { if (language.equals(NO_LANGUAGE_CODE)) { return NO_LANGUAGE_DISPLAY_NAME; public static String getLocaleDisplayName(final String localeString) { if (localeString.equals(NO_LANGUAGE_LOCALE_CODE)) { return NO_LANGUAGE_LOCALE_DISPLAY_NAME; } final Locale locale = constructLocaleFromString(language); final Locale locale = constructLocaleFromString(localeString); return locale.getDisplayName(Locale.ENGLISH); } } Loading
java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public final class KeyboardTextsSet { private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap(); public void setLocale(final Locale locale, final Context context) { final String language = locale.getLanguage(); mTextsTable = KeyboardTextsTable.getTextsTable(language); mTextsTable = KeyboardTextsTable.getTextsTable(locale); final Resources res = context.getResources(); final int referenceId = context.getApplicationInfo().labelRes; final String resourcePackageName = res.getResourcePackageName(referenceId); Loading
java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java +196 −190 File changed.Preview size limit exceeded, changes collapsed. Show changes
tools/make-keyboard-text/res/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl +28 −22 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.internal; import com.android.inputmethod.latin.utils.CollectionUtils; import java.util.HashMap; import java.util.Locale; /** * !!!!! DO NOT EDIT THIS FILE !!!!! Loading @@ -44,19 +45,19 @@ import java.util.HashMap; public final class KeyboardTextsTable { // Name to index map. private static final HashMap<String, Integer> sNameToIndexesMap = CollectionUtils.newHashMap(); // Language to texts table map. private static final HashMap<String, String[]> sLanguageToTextsTableMap = // Locale to texts table map. private static final HashMap<String, String[]> sLocaleToTextsTableMap = CollectionUtils.newHashMap(); // TODO: Remove this variable after debugging. // Texts table to language maps. private static final HashMap<String[], String> sTextsTableToLanguageMap = // Texts table to locale maps. private static final HashMap<String[], String> sTextsTableToLocaleMap = CollectionUtils.newHashMap(); public static String getText(final String name, final String[] textsTable) { final Integer indexObj = sNameToIndexesMap.get(name); if (indexObj == null) { throw new RuntimeException("Unknown text name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); throw new RuntimeException("Unknown text name=" + name + " locale=" + sTextsTableToLocaleMap.get(textsTable)); } final int index = indexObj; final String text = (index < textsTable.length) ? textsTable[index] : null; Loading @@ -64,17 +65,24 @@ public final class KeyboardTextsTable { return text; } // Sanity check. if (index >= 0 && index < LANGUAGE_DEFAULT.length) { return LANGUAGE_DEFAULT[index]; if (index >= 0 && index < TEXTS_DEFAULT.length) { return TEXTS_DEFAULT[index]; } // Throw exception for debugging purpose. throw new RuntimeException("Illegal index=" + index + " for name=" + name + " language=" + sTextsTableToLanguageMap.get(textsTable)); + " locale=" + sTextsTableToLocaleMap.get(textsTable)); } public static String[] getTextsTable(final String language) { final String[] textsTable = sLanguageToTextsTableMap.get(language); return textsTable != null ? textsTable : LANGUAGE_DEFAULT; public static String[] getTextsTable(final Locale locale) { final String localeKey = locale.toString(); if (sLocaleToTextsTableMap.containsKey(localeKey)) { return sLocaleToTextsTableMap.get(localeKey); } final String languageKey = locale.getLanguage(); if (sLocaleToTextsTableMap.containsKey(languageKey)) { return sLocaleToTextsTableMap.get(languageKey); } return TEXTS_DEFAULT; } private static final String[] NAMES = { Loading @@ -85,16 +93,14 @@ public final class KeyboardTextsTable { private static final String EMPTY = ""; /* Default texts */ private static final String[] LANGUAGE_DEFAULT = { private static final String[] TEXTS_DEFAULT = { /* @DEFAULT_TEXTS@ */ }; /* @TEXTS@ */ // TODO: Use the language + "_" + region representation for the locale string key. // Currently we are dropping the region from the key. private static final Object[] LANGUAGES_AND_TEXTS = { private static final Object[] LOCALES_AND_TEXTS = { // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */ /* @LANGUAGES_AND_TEXTS@ */ /* @LOCALES_AND_TEXTS@ */ }; static { Loading @@ -102,11 +108,11 @@ public final class KeyboardTextsTable { sNameToIndexesMap.put(NAMES[index], index); } for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) { final String language = (String)LANGUAGES_AND_TEXTS[i]; final String[] textsTable = (String[])LANGUAGES_AND_TEXTS[i + 1]; sLanguageToTextsTableMap.put(language, textsTable); sTextsTableToLanguageMap.put(textsTable, language); for (int i = 0; i < LOCALES_AND_TEXTS.length; i += 2) { final String locale = (String)LOCALES_AND_TEXTS[i]; final String[] textsTable = (String[])LOCALES_AND_TEXTS[i + 1]; sLocaleToTextsTableMap.put(locale, textsTable); sTextsTableToLocaleMap.put(textsTable, locale); } } }
tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/JarUtils.java +11 −11 Original line number Diff line number Diff line Loading @@ -85,24 +85,24 @@ public final class JarUtils { }); } // The language is taken from string resource jar entry name (values-<language>/) // or {@link LocaleUtils#DEFAULT_LANGUAGE_NAME} for the default string resource // The locale is taken from string resource jar entry name (values-<locale>/) // or {@link LocaleUtils#DEFAULT_LOCALE_KEY} for the default string resource // directory (values/). public static String getLanguageFromEntryName(final String jarEntryName) { public static String getLocaleFromEntryName(final String jarEntryName) { final String dirName = jarEntryName.substring(0, jarEntryName.lastIndexOf('/')); final int pos = dirName.lastIndexOf('/'); final String parentName = (pos >= 0) ? dirName.substring(pos + 1) : dirName; final int languagePos = parentName.indexOf('-'); if (languagePos < 0) { final int localePos = parentName.indexOf('-'); if (localePos < 0) { // Default resource name. return LocaleUtils.DEFAULT_LANGUAGE_NAME; return LocaleUtils.DEFAULT_LOCALE_KEY; } final String language = parentName.substring(languagePos + 1); final int countryPos = language.indexOf("-r"); if (countryPos < 0) { return language; final String locale = parentName.substring(localePos + 1); final int regionPos = locale.indexOf("-r"); if (regionPos < 0) { return locale; } return language.replace("-r", "_"); return locale.replace("-r", "_"); } public static void close(final Closeable stream) { Loading
tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java +9 −8 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import java.util.Locale; * for the make-keyboard-text tool. */ public final class LocaleUtils { public static final String DEFAULT_LANGUAGE_NAME = "DEFAULT"; public static final String NO_LANGUAGE_CODE = "zz"; public static final String NO_LANGUAGE_DISPLAY_NAME = "Alphabet"; public static final String DEFAULT_LOCALE_KEY = "DEFAULT"; public static final String NO_LANGUAGE_LOCALE_CODE = "zz"; public static final String NO_LANGUAGE_LOCALE_DISPLAY_NAME = "Alphabet"; private LocaleUtils() { // Intentional empty constructor for utility class. Loading @@ -48,7 +48,8 @@ public final class LocaleUtils { if (retval != null) { return retval; } String[] localeParams = localeStr.split("_", 3); final String[] localeParams = localeStr.split("_", 3); // TODO: Use JDK 7 Locale.Builder to handle a script name. if (localeParams.length == 1) { retval = new Locale(localeParams[0]); } else if (localeParams.length == 2) { Loading @@ -63,11 +64,11 @@ public final class LocaleUtils { } } public static String getLanguageDisplayName(final String language) { if (language.equals(NO_LANGUAGE_CODE)) { return NO_LANGUAGE_DISPLAY_NAME; public static String getLocaleDisplayName(final String localeString) { if (localeString.equals(NO_LANGUAGE_LOCALE_CODE)) { return NO_LANGUAGE_LOCALE_DISPLAY_NAME; } final Locale locale = constructLocaleFromString(language); final Locale locale = constructLocaleFromString(localeString); return locale.getDisplayName(Locale.ENGLISH); } }