aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java109
-rw-r--r--tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl1
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java10
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java30
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java14
5 files changed, 97 insertions, 67 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 14991f587..e8e9743f4 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -3476,60 +3476,61 @@ public final class KeyboardTextsTable {
// 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 = {
- "DEFAULT", LANGUAGE_DEFAULT, /* default */
- "af", LANGUAGE_af, /* Afrikaans */
- "ar", LANGUAGE_ar, /* Arabic */
- "az" /* "az_AZ" */, LANGUAGE_az_AZ, /* Azerbaijani (Azerbaijan) */
- "be" /* "be_BY" */, LANGUAGE_be_BY, /* Belarusian (Belarus) */
- "bg", LANGUAGE_bg, /* Bulgarian */
- "ca", LANGUAGE_ca, /* Catalan */
- "cs", LANGUAGE_cs, /* Czech */
- "da", LANGUAGE_da, /* Danish */
- "de", LANGUAGE_de, /* German */
- "el", LANGUAGE_el, /* Greek */
- "en", LANGUAGE_en, /* English */
- "eo", LANGUAGE_eo, /* Esperanto */
- "es", LANGUAGE_es, /* Spanish */
- "et" /* "et_EE" */, LANGUAGE_et_EE, /* Estonian (Estonia) */
- "fa", LANGUAGE_fa, /* Persian */
- "fi", LANGUAGE_fi, /* Finnish */
- "fr", LANGUAGE_fr, /* French */
- "hi", LANGUAGE_hi, /* Hindi */
- "hr", LANGUAGE_hr, /* Croatian */
- "hu", LANGUAGE_hu, /* Hungarian */
- "hy" /* "hy_AM" */, LANGUAGE_hy_AM, /* Armenian (Armenia) */
- "is", LANGUAGE_is, /* Icelandic */
- "it", LANGUAGE_it, /* Italian */
- "iw", LANGUAGE_iw, /* Hebrew */
- "ka" /* "ka_GE" */, LANGUAGE_ka_GE, /* Georgian (Georgia) */
- "kk", LANGUAGE_kk, /* Kazakh */
- "km" /* "km_KH" */, LANGUAGE_km_KH, /* Khmer (Cambodia) */
- "ky", LANGUAGE_ky, /* Kirghiz */
- "lo" /* "lo_LA" */, LANGUAGE_lo_LA, /* Lao (Laos) */
- "lt", LANGUAGE_lt, /* Lithuanian */
- "lv", LANGUAGE_lv, /* Latvian */
- "mk", LANGUAGE_mk, /* Macedonian */
- "mn" /* "mn_MN" */, LANGUAGE_mn_MN, /* Mongolian (Mongolia) */
- "nb", LANGUAGE_nb, /* Norwegian Bokmål */
- "ne" /* "ne_NP" */, LANGUAGE_ne_NP, /* Nepali (Nepal) */
- "nl", LANGUAGE_nl, /* Dutch */
- "pl", LANGUAGE_pl, /* Polish */
- "pt", LANGUAGE_pt, /* Portuguese */
- "rm", LANGUAGE_rm, /* Raeto-Romance */
- "ro", LANGUAGE_ro, /* Romanian */
- "ru", LANGUAGE_ru, /* Russian */
- "sk", LANGUAGE_sk, /* Slovak */
- "sl", LANGUAGE_sl, /* Slovenian */
- "sr", LANGUAGE_sr, /* Serbian */
- "sv", LANGUAGE_sv, /* Swedish */
- "sw", LANGUAGE_sw, /* Swahili */
- "th", LANGUAGE_th, /* Thai */
- "tl", LANGUAGE_tl, /* Tagalog */
- "tr", LANGUAGE_tr, /* Turkish */
- "uk", LANGUAGE_uk, /* Ukrainian */
- "vi", LANGUAGE_vi, /* Vietnamese */
- "zu", LANGUAGE_zu, /* Zulu */
- "zz", LANGUAGE_zz, /* Alphabet */
+ // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
+ "DEFAULT", LANGUAGE_DEFAULT, /* 156/156 default */
+ "af", LANGUAGE_af, /* 8/ 9 Afrikaans */
+ "ar", LANGUAGE_ar, /* 48/119 Arabic */
+ "az", LANGUAGE_az_AZ, /* 8/ 16 Azerbaijani (Azerbaijan) */
+ "be", LANGUAGE_be_BY, /* 10/ 54 Belarusian (Belarus) */
+ "bg", LANGUAGE_bg, /* 2/ 54 Bulgarian */
+ "ca", LANGUAGE_ca, /* 11/126 Catalan */
+ "cs", LANGUAGE_cs, /* 17/ 56 Czech */
+ "da", LANGUAGE_da, /* 19/ 56 Danish */
+ "de", LANGUAGE_de, /* 16/ 56 German */
+ "el", LANGUAGE_el, /* 1/ 52 Greek */
+ "en", LANGUAGE_en, /* 8/ 8 English */
+ "eo", LANGUAGE_eo, /* 26/126 Esperanto */
+ "es", LANGUAGE_es, /* 8/ 60 Spanish */
+ "et", LANGUAGE_et_EE, /* 22/ 54 Estonian (Estonia) */
+ "fa", LANGUAGE_fa, /* 49/119 Persian */
+ "fi", LANGUAGE_fi, /* 10/ 25 Finnish */
+ "fr", LANGUAGE_fr, /* 13/ 51 French */
+ "hi", LANGUAGE_hi, /* 24/ 91 Hindi */
+ "hr", LANGUAGE_hr, /* 9/ 56 Croatian */
+ "hu", LANGUAGE_hu, /* 9/ 56 Hungarian */
+ "hy", LANGUAGE_hy_AM, /* 7/117 Armenian (Armenia) */
+ "is", LANGUAGE_is, /* 13/ 54 Icelandic */
+ "it", LANGUAGE_it, /* 5/ 5 Italian */
+ "iw", LANGUAGE_iw, /* 14/ 68 Hebrew */
+ "ka", LANGUAGE_ka_GE, /* 3/ 54 Georgian (Georgia) */
+ "kk", LANGUAGE_kk, /* 16/ 52 Kazakh */
+ "km", LANGUAGE_km_KH, /* 2/ 57 Khmer (Cambodia) */
+ "ky", LANGUAGE_ky, /* 11/ 52 Kirghiz */
+ "lo", LANGUAGE_lo_LA, /* 2/ 58 Lao (Laos) */
+ "lt", LANGUAGE_lt, /* 18/ 54 Lithuanian */
+ "lv", LANGUAGE_lv, /* 18/ 54 Latvian */
+ "mk", LANGUAGE_mk, /* 9/ 54 Macedonian */
+ "mn", LANGUAGE_mn_MN, /* 2/ 58 Mongolian (Mongolia) */
+ "nb", LANGUAGE_nb, /* 11/ 54 Norwegian Bokmål */
+ "ne", LANGUAGE_ne_NP, /* 24/ 91 Nepali (Nepal) */
+ "nl", LANGUAGE_nl, /* 9/ 54 Dutch */
+ "pl", LANGUAGE_pl, /* 10/ 54 Polish */
+ "pt", LANGUAGE_pt, /* 6/ 8 Portuguese */
+ "rm", LANGUAGE_rm, /* 1/ 4 Raeto-Romance */
+ "ro", LANGUAGE_ro, /* 6/ 54 Romanian */
+ "ru", LANGUAGE_ru, /* 10/ 54 Russian */
+ "sk", LANGUAGE_sk, /* 20/ 56 Slovak */
+ "sl", LANGUAGE_sl, /* 8/ 56 Slovenian */
+ "sr", LANGUAGE_sr, /* 11/ 56 Serbian */
+ "sv", LANGUAGE_sv, /* 21/ 56 Swedish */
+ "sw", LANGUAGE_sw, /* 9/ 16 Swahili */
+ "th", LANGUAGE_th, /* 2/ 58 Thai */
+ "tl", LANGUAGE_tl, /* 7/ 8 Tagalog */
+ "tr", LANGUAGE_tr, /* 7/ 16 Turkish */
+ "uk", LANGUAGE_uk, /* 12/ 58 Ukrainian */
+ "vi", LANGUAGE_vi, /* 8/ 58 Vietnamese */
+ "zu", LANGUAGE_zu, /* 8/ 8 Zulu */
+ "zz", LANGUAGE_zz, /* 19/ 20 Alphabet */
};
static {
diff --git a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl b/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
index d95de2923..eadeb1e31 100644
--- a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
+++ b/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl
@@ -77,6 +77,7 @@ public final class KeyboardTextsTable {
// 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 = {
+ // "locale", TEXT_ARRAY, /* numberOfNonNullText/lengthOf_TEXT_ARRAY localeName */
/* @LANGUAGES_AND_TEXTS@ */
};
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
index 331003e67..d2763e024 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java
@@ -29,12 +29,16 @@ public class ArrayInitializerFormatter {
private int mBufferedLen;
private int mBufferedIndex = Integer.MIN_VALUE;
- public ArrayInitializerFormatter(PrintStream out, int width, String indent) {
+ public ArrayInitializerFormatter(final PrintStream out, final int width, final String indent) {
mOut = out;
mMaxWidth = width - indent.length();
mIndent = indent;
}
+ public int getCurrentIndex() {
+ return mCurrentIndex;
+ }
+
public void flush() {
if (mBuffer.length() == 0) {
return;
@@ -59,13 +63,13 @@ public class ArrayInitializerFormatter {
mBufferedLen = 0;
}
- public void outCommentLines(String lines) {
+ public void outCommentLines(final String lines) {
flush();
mOut.print(lines);
mFixedElement = null;
}
- public void outElement(String element) {
+ public void outElement(final String element) {
if (!element.equals(mFixedElement)) {
flush();
mBufferedIndex = mCurrentIndex;
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
index dddb3d6c8..97a12d707 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java
@@ -38,7 +38,6 @@ public class MoreKeysResources {
private static final String MARK_TEXTS = "@TEXTS@";
private static final String MARK_LANGUAGES_AND_TEXTS = "@LANGUAGES_AND_TEXTS@";
private static final String DEFAULT_LANGUAGE_NAME = "DEFAULT";
- private static final String ARRAY_NAME_FOR_LANGUAGE = "LANGUAGE_%s";
private static final String EMPTY_STRING_VAR = "EMPTY";
private static final String NO_LANGUAGE_CODE = "zz";
@@ -144,7 +143,12 @@ public class MoreKeysResources {
private void dumpDefaultTexts(final PrintStream out) {
final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
- dumpTextsInternal(out, defaultResMap, defaultResMap);
+ final int outputArraySize = dumpTextsInternal(out, defaultResMap, defaultResMap);
+ defaultResMap.setOutputArraySize(outputArraySize);
+ }
+
+ private static String getArrayNameForLanguage(final String language) {
+ return "LANGUAGE_" + language;
}
private void dumpTexts(final PrintStream out) {
@@ -157,8 +161,8 @@ public class MoreKeysResources {
continue;
}
out.format(" /* Language %s: %s */\n", language, getLanguageDisplayName(language));
- out.format(" private static final String[] " + ARRAY_NAME_FOR_LANGUAGE + " = {\n",
- language);
+ out.format(" private static final String[] " + getArrayNameForLanguage(language)
+ + " = {\n");
final StringResourceMap resMap = mResourcesMap.get(language);
for (final StringResource res : resMap.getResources()) {
if (!defaultResMap.contains(res.mName)) {
@@ -166,7 +170,8 @@ public class MoreKeysResources {
+ " doesn't have default resource");
}
}
- dumpTextsInternal(out, resMap, defaultResMap);
+ final int outputArraySize = dumpTextsInternal(out, resMap, defaultResMap);
+ resMap.setOutputArraySize(outputArraySize);
out.format(" };\n\n");
}
}
@@ -176,13 +181,15 @@ public class MoreKeysResources {
allLanguages.addAll(mResourcesMap.keySet());
Collections.sort(allLanguages);
for (final String language : allLanguages) {
+ final StringResourceMap resMap = mResourcesMap.get(language);
final Locale locale = LocaleUtils.constructLocaleFromString(language);
- // If we use a different key, dump the original as comment for now.
final String languageKeyToDump = locale.getCountry().isEmpty()
? String.format("\"%s\"", language)
- : String.format("\"%s\" /* \"%s\" */", locale.getLanguage(), language);
- out.format(" %s, " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
- languageKeyToDump, language, getLanguageDisplayName(language));
+ : String.format("\"%s\"", locale.getLanguage());
+ out.format(" %s, %-15s /* %3d/%3d %s */\n",
+ languageKeyToDump, getArrayNameForLanguage(language) + ",",
+ resMap.getResources().size(), resMap.getOutputArraySize(),
+ getLanguageDisplayName(language));
}
}
@@ -194,10 +201,11 @@ public class MoreKeysResources {
return locale.getDisplayName(Locale.ENGLISH);
}
- private static void dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,
+ private static int dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,
final StringResourceMap defaultResMap) {
final ArrayInitializerFormatter formatter =
new ArrayInitializerFormatter(out, 100, " ");
+ int outputArraySize = 0;
boolean successiveNull = false;
for (final StringResource defaultRes : defaultResMap.getResources()) {
if (resMap.contains(defaultRes.mName)) {
@@ -212,6 +220,7 @@ public class MoreKeysResources {
formatter.outElement(String.format("\"%s\",", escaped));
}
successiveNull = false;
+ outputArraySize = formatter.getCurrentIndex();
} else {
formatter.outElement("null,");
successiveNull = true;
@@ -220,6 +229,7 @@ public class MoreKeysResources {
if (!successiveNull) {
formatter.flush();
}
+ return outputArraySize;
}
private static String addPrefix(final String prefix, final String lines) {
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
index cc7ff6a9c..4eff8a24b 100644
--- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java
@@ -39,6 +39,12 @@ public class StringResourceMap {
// Name to string resource map.
private final Map<String, StringResource> mResourcesMap;
+ // The length of String[] that is created from this {@link StringResourceMap}. The length is
+ // calculated in {@link MoreKeysResources#dumpTexts(OutputStream)} and recorded by
+ // {@link #setOutputArraySize(int)}. The recorded length is used as a part of comment by
+ // {@link MoreKeysResources#dumpLanguageMap(OutputStream)} via {@link #getOutputArraySize()}.
+ private int mOutputArraySize;
+
public StringResourceMap(final InputStream is) {
final StringResourceHandler handler = new StringResourceHandler();
final SAXParserFactory factory = SAXParserFactory.newInstance();
@@ -77,6 +83,14 @@ public class StringResourceMap {
return mResourcesMap.get(name);
}
+ public void setOutputArraySize(final int arraySize) {
+ mOutputArraySize = arraySize;
+ }
+
+ public int getOutputArraySize() {
+ return mOutputArraySize;
+ }
+
static class StringResourceHandler extends DefaultHandler2 {
private static final String TAG_RESOURCES = "resources";
private static final String TAG_STRING = "string";