aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.tmpl2
-rw-r--r--tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml26
-rw-r--r--tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml4
-rw-r--r--tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml2
-rw-r--r--tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml30
-rw-r--r--tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml2
-rw-r--r--tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml5
-rw-r--r--tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml33
-rw-r--r--tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml2
-rw-r--r--tools/make-keyboard-text/res/values/donottranslate-more-keys.xml79
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java55
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java153
-rw-r--r--tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java14
13 files changed, 252 insertions, 155 deletions
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..f56cfd91b 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
@@ -63,6 +63,7 @@ public final class KeyboardTextsTable {
}
private static final String[] NAMES = {
+ // /* index:histogram */ "name",
/* @NAMES@ */
};
@@ -77,6 +78,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/res/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
index f8050a395..d9976858a 100644
--- a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
@@ -75,7 +75,7 @@
<!-- U+066A: "٪" ARABIC PERCENT SIGN -->
<string name="keylabel_for_symbols_percent">&#x066A;</string>
<!-- U+00BF: "¿" INVERTED QUESTION MARK -->
- <string name="more_keys_for_question">\?,&#x00BF;</string>
+ <string name="more_keys_for_question">?,&#x00BF;</string>
<string name="more_keys_for_symbols_semicolon">;</string>
<!-- U+2030: "‰" PER MILLE SIGN -->
<string name="more_keys_for_symbols_percent">\\%,&#x2030;</string>
@@ -85,7 +85,7 @@
<string name="keylabel_for_tablet_comma">"&#x060C;"</string>
<string name="keyhintlabel_for_tablet_comma">"&#x061F;"</string>
<string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,\",\'"</string>
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,\@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
+ <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
<!-- U+266A: "♪" EIGHTH NOTE -->
<string name="more_keys_for_bullet">&#x266A;</string>
<!-- U+2605: "★" BLACK STAR
@@ -95,18 +95,28 @@
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
<!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
+ <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,!text/keyspecs_for_left_parenthesis_more_keys</string>
+ <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,!text/keyspecs_for_right_parenthesis_more_keys</string>
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
U+2265: "≥" GREATER-THAN EQUAL TO
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
- <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
- <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+ <string name="keyspec_left_parenthesis">(|)</string>
+ <string name="keyspec_right_parenthesis">)|(</string>
+ <string name="keyspec_left_square_bracket">[|]</string>
+ <string name="keyspec_right_square_bracket">]|[</string>
+ <string name="keyspec_left_curly_bracket">{|}</string>
+ <string name="keyspec_right_curly_bracket">}|{</string>
+ <string name="keyspec_less_than">&lt;|&gt;</string>
+ <string name="keyspec_greater_than">&gt;|&lt;</string>
+ <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+ <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+ <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+ <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+ <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+ <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
<!-- U+0655: "ٕ" ARABIC HAMZA BELOW
U+0654: "ٔ" ARABIC HAMZA ABOVE
U+0652: "ْ" ARABIC SUKUN
diff --git a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
index f63e85bd5..8865a6057 100644
--- a/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ca/donottranslate-more-keys.xml
@@ -71,8 +71,8 @@
U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
<string name="more_keys_for_l">l&#x00B7;l,&#x0142;</string>
<!-- U+00B7: "·" MIDDLE DOT -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,;,/,(,),#,&#x00B7;,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
- <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!8,;,/,(,),#,&#x00B7;,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
+ <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,;,/,(,),#,&#x00B7;,!,\\,,?,&amp;,\\%,+,\",-,:,',@"</string>
+ <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!8,;,/,(,),#,&#x00B7;,',\\,,&amp;,\\%,+,\",-,:,@"</string>
<!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
<string name="keylabel_for_spanish_row2_10">&#x00E7;</string>
</resources>
diff --git a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
index f4fe7f787..453d5c196 100644
--- a/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-es/donottranslate-more-keys.xml
@@ -69,5 +69,5 @@
<string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
<!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
U+00BF: "¿" INVERTED QUESTION MARK -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,&#x00A1;,;,/,(,),#,!,\\,,\?,&#x00BF;,&amp;,\\%,+,\",-,:,',\@"</string>
+ <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,&#x00A1;,;,/,(,),#,!,\\,,?,&#x00BF;,&amp;,\\%,+,\",-,:,',@"</string>
</resources>
diff --git a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
index a053a8885..6ea04338e 100644
--- a/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fa/donottranslate-more-keys.xml
@@ -75,7 +75,7 @@
<!-- U+066A: "٪" ARABIC PERCENT SIGN -->
<string name="keylabel_for_symbols_percent">&#x066A;</string>
<!-- U+00BF: "¿" INVERTED QUESTION MARK -->
- <string name="more_keys_for_question">\?,&#x00BF;</string>
+ <string name="more_keys_for_question">?,&#x00BF;</string>
<string name="more_keys_for_symbols_semicolon">;</string>
<!-- U+2030: "‰" PER MILLE SIGN -->
<string name="more_keys_for_symbols_percent">\\%,&#x2030;</string>
@@ -86,13 +86,13 @@
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
<string name="keylabel_for_tablet_comma">"&#x060C;"</string>
<string name="keyhintlabel_for_tablet_comma">"&#x061F;"</string>
- <string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;"</string>
+ <string name="more_keys_for_tablet_comma">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote"</string>
<!-- U+FDFC: "﷼" RIAL SIGN -->
<string name="keylabel_for_currency">&#xFDFC;</string>
<!-- U+061F: "؟" ARABIC QUESTION MARK
U+060C: "،" ARABIC COMMA
U+061B: "؛" ARABIC SEMICOLON -->
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,\@,&amp;,\\%,+,&#x061B;,/,(|),)|("</string>
+ <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,&#x060C;,&#x061F;,@,&amp;,\\%,+,&#x061B;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis"</string>
<!-- U+266A: "♪" EIGHTH NOTE -->
<string name="more_keys_for_bullet">&#x266A;</string>
<!-- U+2605: "★" BLACK STAR
@@ -102,18 +102,30 @@
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
<!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,&gt;|&lt;,}|{,]|[</string>
+ <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!4,&#xFD3E;|&#xFD3F;,!text/keyspecs_for_left_parenthesis_more_keys</string>
+ <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!4,&#xFD3F;|&#xFD3E;,!text/keyspecs_for_right_parenthesis_more_keys</string>
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
U+2265: "≥" GREATER-THAN EQUAL TO
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&lt;|&gt;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&gt;|&lt;</string>
- <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
- <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+ <string name="more_keys_for_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote;,!text/keyspec_less_than_equal;,!text/keyspec_less_than</string>
+ <string name="more_keys_for_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote;,!text/keyspec_greater_than_equal;,!text/keyspec_greater_than</string>
+ <string name="keyspec_left_parenthesis">(|)</string>
+ <string name="keyspec_right_parenthesis">)|(</string>
+ <string name="keyspec_left_square_bracket">[|]</string>
+ <string name="keyspec_right_square_bracket">]|[</string>
+ <string name="keyspec_left_curly_bracket">{|}</string>
+ <string name="keyspec_right_curly_bracket">}|{</string>
+ <string name="keyspec_less_than">&lt;|&gt;</string>
+ <string name="keyspec_greater_than">&gt;|&lt;</string>
+ <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+ <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+ <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+ <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+ <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+ <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
<!-- U+0655: "ٕ" ARABIC HAMZA BELOW
U+0652: "ْ" ARABIC SUKUN
U+0651: "ّ" ARABIC SHADDA
diff --git a/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
index b0d010f81..de10a010f 100644
--- a/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hi/donottranslate-more-keys.xml
@@ -44,7 +44,7 @@
<!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
<string name="keylabel_for_symbols_0">&#x0966;</string>
<!-- Label for "switch to symbols" key. -->
- <string name="label_to_symbol_key">\?&#x0967;&#x0968;&#x0969;</string>
+ <string name="label_to_symbol_key">?&#x0967;&#x0968;&#x0969;</string>
<!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
part because it'll be appended by the code. -->
<string name="label_to_symbol_with_microphone_key">&#x0967;&#x0968;&#x0969;</string>
diff --git a/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
index 73fe927ab..a17dc101d 100644
--- a/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
@@ -18,6 +18,11 @@
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Label for "switch to alphabetic" key.
+ U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
+ U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
+ U+0533: "Գ" ARMENIAN CAPITAL LETTER GIM -->
+ <string name="label_to_alpha_key">&#x0531;&#x0532;&#x0533;</string>
<!-- U+058A: "֊" ARMENIAN HYPHEN -->
<!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
<!-- U+055D: "՝" ARMENIAN COMMA -->
diff --git a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
index e231a398e..8314ae5da 100644
--- a/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-iw/donottranslate-more-keys.xml
@@ -28,31 +28,30 @@
<!-- U+00B1: "±" PLUS-MINUS SIGN
U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
<string name="more_keys_for_plus">&#x00B1;,&#xFB29;</string>
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(|),)|(,#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
- <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(|),)|(,#,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
<!-- The all letters need to be mirrored are found at
http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;|&gt;,{|},[|]</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;|&lt;,}|{,]|[</string>
<!-- U+2264: "≤" LESS-THAN OR EQUAL TO
U+2265: "≥" GREATER-THAN EQUAL TO
U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;|&#x203A;,&#x2264;|&#x2265;,&#x00AB;|&#x00BB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;|&#x2039;,&#x2265;|&#x2264;,&#x00BB;|&#x00AB;</string>
- <!-- The following characters don't need BIDI mirroring.
- U+2018: "‘" LEFT SINGLE QUOTATION MARK
- U+2019: "’" RIGHT SINGLE QUOTATION MARK
- U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
- U+201C: "“" LEFT DOUBLE QUOTATION MARK
- U+201D: "”" RIGHT DOUBLE QUOTATION MARK
- U+201E: "„" DOUBLE LOW-9 QUOTATION MARK -->
- <string name="single_quotes">&#x2018;,&#x2019;,&#x201A;</string>
- <string name="double_quotes">&#x201C;,&#x201D;,&#x201E;</string>
- <string name="single_angle_quotes">!text/single_laqm_raqm_rtl</string>
- <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
+ <string name="keyspec_left_parenthesis">(|)</string>
+ <string name="keyspec_right_parenthesis">)|(</string>
+ <string name="keyspec_left_square_bracket">[|]</string>
+ <string name="keyspec_right_square_bracket">]|[</string>
+ <string name="keyspec_left_curly_bracket">{|}</string>
+ <string name="keyspec_right_curly_bracket">}|{</string>
+ <string name="keyspec_less_than">&lt;|&gt;</string>
+ <string name="keyspec_greater_than">&gt;|&lt;</string>
+ <string name="keyspec_less_than_equal">&#x2264;|&#x2265;</string>
+ <string name="keyspec_greater_than_equal">&#x2265;|&#x2264;</string>
+ <string name="keyspec_left_double_angle_quote">&#x00AB;|&#x00BB;</string>
+ <string name="keyspec_right_double_angle_quote">&#x00BB;|&#x00AB;</string>
+ <string name="keyspec_left_single_angle_quote">&#x2039;|&#x203A;</string>
+ <string name="keyspec_right_single_angle_quote">&#x203A;|&#x2039;</string>
+ <string name="single_quotes">!text/single_rqm_9qm</string>
+ <string name="double_quotes">!text/double_rqm_9qm</string>
<!-- U+20AA: "₪" NEW SHEQEL SIGN -->
<string name="keylabel_for_currency">&#x20AA;</string>
</resources>
diff --git a/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
index 9205e5309..e92a87e19 100644
--- a/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
@@ -44,7 +44,7 @@
<!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
<string name="keylabel_for_symbols_0">&#x0966;</string>
<!-- Label for "switch to symbols" key. -->
- <string name="label_to_symbol_key">\?&#x0967;&#x0968;&#x0969;</string>
+ <string name="label_to_symbol_key">?&#x0967;&#x0968;&#x0969;</string>
<!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
part because it'll be appended by the code. -->
<string name="label_to_symbol_with_microphone_key">&#x0967;&#x0968;&#x0969;</string>
diff --git a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
index 46eab571a..9cdcb4668 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -83,8 +83,10 @@
<string name="more_keys_for_currency_dollar">&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
<string name="keylabel_for_currency">$</string>
<string name="more_keys_for_currency">$,&#x00A2;,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
- <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,(,),#,!,\\,,\?,&amp;,\\%,+,\",-,:,',\@"</string>
- <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,(,),#,',\\,,&amp;,\\%,+,\",-,:,\@"</string>
+ <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,!,\\,,?,&amp;,\\%,+,\",-,:,',@"</string>
+ <string name="more_keys_for_tablet_punctuation">"!fixedColumnOrder!7,;,/,!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,#,',\\,,&amp;,\\%,+,\",-,:,@"</string>
+ <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+ <string name="keylabel_for_spanish_row2_10">&#x00F1;</string>
<!-- U+2020: "†" DAGGER
U+2021: "‡" DOUBLE DAGGER
U+2605: "★" BLACK STAR -->
@@ -97,18 +99,10 @@
<string name="more_keys_for_bullet">&#x266A;,&#x2665;,&#x2660;,&#x2666;,&#x2663;</string>
<!-- U+00B1: "±" PLUS-MINUS SIGN -->
<string name="more_keys_for_plus">&#x00B1;</string>
- <!-- The all letters need to be mirrored are found at
- http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
- <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,&lt;,{,[</string>
- <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,&gt;,},]</string>
- <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- U+2264: "≤" LESS-THAN OR EQUAL TO
- U+2265: "≥" GREATER-THAN EQUAL TO
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
- <string name="more_keys_for_less_than">!fixedColumnOrder!3,&#x2039;,&#x2264;,&#x00AB;</string>
- <string name="more_keys_for_greater_than">!fixedColumnOrder!3,&#x203A;,&#x2265;,&#x00BB;</string>
+ <string name="more_keys_for_left_parenthesis">!fixedColumnOrder!3,!text/keyspecs_for_left_parenthesis_more_keys</string>
+ <string name="more_keys_for_right_parenthesis">!fixedColumnOrder!3,!text/keyspecs_for_right_parenthesis_more_keys</string>
+ <string name="more_keys_for_less_than">!fixedColumnOrder!3,!text/keyspec_left_single_angle_quote,!text/keyspec_less_than_equal,!text/keyspec_left_double_angle_quote</string>
+ <string name="more_keys_for_greater_than">!fixedColumnOrder!3,!text/keyspec_right_single_angle_quote,!text/keyspec_greater_than_equal,!text/keyspec_right_double_angle_quote</string>
<string name="more_keys_for_arabic_diacritics"></string>
<string name="keylabel_for_symbols_1">1</string>
<string name="keylabel_for_symbols_2">2</string>
@@ -121,7 +115,7 @@
<string name="keylabel_for_symbols_9">9</string>
<string name="keylabel_for_symbols_0">0</string>
<!-- Label for "switch to symbols" key. -->
- <string name="label_to_symbol_key">\?123</string>
+ <string name="label_to_symbol_key">?123</string>
<!-- Label for "switch to symbols with microphone" key. This string shouldn't include the "mic"
part because it'll be appended by the code. -->
<string name="label_to_symbol_with_microphone_key">123</string>
@@ -160,6 +154,28 @@
<!-- U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
U+2205: "∅" EMPTY SET -->
<string name="more_keys_for_symbols_0">&#x207F;,&#x2205;</string>
+ <!-- The all letters need to be mirrored are found at
+ http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt
+ U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ U+2264: "≤" LESS-THAN OR EQUAL TO
+ U+2265: "≥" GREATER-THAN EQUAL TO
+ U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <string name="keyspec_left_parenthesis">(</string>
+ <string name="keyspec_right_parenthesis">)</string>
+ <string name="keyspec_left_square_bracket">[</string>
+ <string name="keyspec_right_square_bracket">]</string>
+ <string name="keyspec_left_curly_bracket">{</string>
+ <string name="keyspec_right_curly_bracket">}</string>
+ <string name="keyspec_less_than">&lt;</string>
+ <string name="keyspec_greater_than">&gt;</string>
+ <string name="keyspec_less_than_equal">&#x2264;</string>
+ <string name="keyspec_greater_than_equal">&#x2265;</string>
+ <string name="keyspec_left_double_angle_quote">&#x00AB;</string>
+ <string name="keyspec_right_double_angle_quote">&#x00BB;</string>
+ <string name="keyspec_left_single_angle_quote">&#x2039;</string>
+ <string name="keyspec_right_single_angle_quote">&#x203A;</string>
<!-- Comma key -->
<string name="keylabel_for_comma">,</string>
<string name="more_keys_for_comma"></string>
@@ -173,7 +189,7 @@
<string name="keylabel_for_tablet_period">.</string>
<string name="keyhintlabel_for_tablet_period"></string>
<string name="more_keys_for_tablet_period">!text/more_keys_for_tablet_punctuation</string>
- <string name="keylabel_for_symbols_question">\?</string>
+ <string name="keylabel_for_symbols_question">?</string>
<string name="keylabel_for_symbols_semicolon">;</string>
<string name="keylabel_for_symbols_percent">%</string>
<!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
@@ -189,19 +205,15 @@
<string name="keylabel_for_w">w</string>
<string name="keylabel_for_y">y</string>
<string name="keylabel_for_x">x</string>
- <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
- <string name="keylabel_for_spanish_row2_10">&#x00F1;</string>
- <string name="more_keys_for_am_pm">!fixedColumnOrder!2,!hasLabels!,\@string/label_time_am,\@string/label_time_pm</string>
+ <string name="more_keys_for_am_pm">!fixedColumnOrder!2,!hasLabels!,!text/label_time_am,!text/label_time_pm</string>
<string name="settings_as_more_key">!icon/settings_key|!code/key_settings</string>
<string name="shortcut_as_more_key">!icon/shortcut_key|!code/key_shortcut</string>
- <string name="action_next_as_more_key">!hasLabels!,\@string/label_next_key|!code/key_action_next</string>
- <string name="action_previous_as_more_key">!hasLabels!,\@string/label_previous_key|!code/key_action_previous</string>
+ <string name="action_next_as_more_key">!hasLabels!,!text/label_next_key|!code/key_action_next</string>
+ <string name="action_previous_as_more_key">!hasLabels!,!text/label_previous_key|!code/key_action_previous</string>
<!-- Label for "switch to more symbol" modifier key ("= \ <"). Must be short to fit on key! -->
<string name="label_to_more_symbol_key">= \\\\ &lt;</string>
<!-- Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! -->
<string name="label_to_more_symbol_for_tablet_key">~ [ &lt;</string>
- <!-- Label for "Tab" key. Must be short to fit on key! -->
- <string name="label_tab_key">Tab</string>
<!-- Label for "switch to phone numeric" key. Must be short to fit on key! -->
<string name="label_to_phone_numeric_key">123</string>
<!-- Label for "switch to phone symbols" key. Must be short to fit on key! -->
@@ -215,11 +227,9 @@
<string name="keylabel_for_popular_domain">".com"</string>
<!-- popular web domains for the locale - most popular, displayed on the keyboard -->
<string name="more_keys_for_popular_domain">"!hasLabels!,.net,.org,.gov,.edu"</string>
- <!-- U+2039: "‹" SINGLE LEFT-POINTING ANGLE QUOTATION MARK
- U+203A: "›" SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
- U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
- U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
- The following characters don't need BIDI mirroring.
+ <string name="keyspecs_for_left_parenthesis_more_keys">!text/keyspec_less_than,!text/keyspec_left_curly_bracket,!text/keyspec_left_square_bracket</string>
+ <string name="keyspecs_for_right_parenthesis_more_keys">!text/keyspec_greater_than,!text/keyspec_right_curly_bracket,!text/keyspec_right_square_bracket</string>
+ <!-- The following characters don't need BIDI mirroring.
U+2018: "‘" LEFT SINGLE QUOTATION MARK
U+2019: "’" RIGHT SINGLE QUOTATION MARK
U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
@@ -229,28 +239,27 @@
<!-- Abbreviations are:
laqm: LEFT-POINTING ANGLE QUOTATION MARK
raqm: RIGHT-POINTING ANGLE QUOTATION MARK
- rtl: Right-To-Left script order
lqm: LEFT QUOTATION MARK
rqm: RIGHT QUOTATION MARK
9qm: LOW-9 QUOTATION MARK -->
<!-- The following each quotation mark pair consist of
<opening quotation mark>, <closing quotation mark>
and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
- <string name="single_laqm_raqm">&#x2039;,&#x203A;</string>
- <string name="single_laqm_raqm_rtl">&#x2039;|&#x203A;,&#x203A;|&#x2039;</string>
- <string name="single_raqm_laqm">&#x203A;,&#x2039;</string>
- <string name="double_laqm_raqm">&#x00AB;,&#x00BB;</string>
- <string name="double_laqm_raqm_rtl">&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
- <string name="double_raqm_laqm">&#x00BB;,&#x00AB;</string>
+ <string name="single_laqm_raqm">!text/keyspec_left_single_angle_quote,!text/keyspec_right_single_angle_quote</string>
+ <string name="single_raqm_laqm">!text/keyspec_right_single_angle_quote,!text/keyspec_left_single_angle_quote</string>
+ <string name="double_laqm_raqm">!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote</string>
+ <string name="double_raqm_laqm">!text/keyspec_right_double_angle_quote,!text/keyspec_left_double_angle_quote</string>
<!-- The following each quotation mark triplet consists of
<another quotation mark>, <opening quotation mark>, <closing quotation mark>
and is named after (single|double)_<opening quotation mark>_<closing quotation mark>. -->
<string name="single_lqm_rqm">&#x201A;,&#x2018;,&#x2019;</string>
<string name="single_9qm_lqm">&#x2019;,&#x201A;,&#x2018;</string>
<string name="single_9qm_rqm">&#x2018;,&#x201A;,&#x2019;</string>
+ <string name="single_rqm_9qm">&#x2018;,&#x2019;,&#x201A;</string>
<string name="double_lqm_rqm">&#x201E;,&#x201C;,&#x201D;</string>
<string name="double_9qm_lqm">&#x201D;,&#x201E;,&#x201C;</string>
<string name="double_9qm_rqm">&#x201C;,&#x201E;,&#x201D;</string>
+ <string name="double_rqm_9qm">&#x201C;,&#x201D;,&#x201E;</string>
<string name="more_keys_for_single_quote">!fixedColumnOrder!5,!text/single_quotes,!text/single_angle_quotes</string>
<string name="more_keys_for_double_quote">!fixedColumnOrder!5,!text/double_quotes,!text/double_angle_quotes</string>
<string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,!text/double_quotes,!text/single_quotes,!text/double_angle_quotes,!text/single_angle_quotes</string>
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..48bf8010a 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
@@ -22,17 +22,26 @@ public class ArrayInitializerFormatter {
private final PrintStream mOut;
private final int mMaxWidth;
private final String mIndent;
+ // String resource names array; indexed by {@link #CurrentIndex} and
+ // {@link #mStartIndexOfBuffer}.
+ private final String[] mResourceNames;
private int mCurrentIndex = 0;
- private String mFixedElement;
+ private String mLastElement;
private final StringBuilder mBuffer = new StringBuilder();
private int mBufferedLen;
- private int mBufferedIndex = Integer.MIN_VALUE;
+ private int mStartIndexOfBuffer = Integer.MIN_VALUE;
- public ArrayInitializerFormatter(PrintStream out, int width, String indent) {
+ public ArrayInitializerFormatter(final PrintStream out, final int width, final String indent,
+ final String[] resourceNames) {
mOut = out;
mMaxWidth = width - indent.length();
mIndent = indent;
+ mResourceNames = resourceNames;
+ }
+
+ public int getCurrentIndex() {
+ return mCurrentIndex;
}
public void flush() {
@@ -40,42 +49,48 @@ public class ArrayInitializerFormatter {
return;
}
final int lastIndex = mCurrentIndex - 1;
- if (mBufferedIndex == lastIndex) {
- mOut.format("%s/* %d */ %s\n", mIndent, mBufferedIndex, mBuffer);
- } else if (mBufferedIndex == lastIndex - 1) {
- final String[] elements = mBuffer.toString().split(" ");
- mOut.format("%s/* %d */ %s\n"
- + "%s/* %d */ %s\n",
- mIndent, mBufferedIndex, elements[0],
- mIndent, lastIndex, elements[1]);
+ if (mStartIndexOfBuffer == lastIndex) {
+ mOut.format("%s/* %s */ %s\n",
+ mIndent, mResourceNames[mStartIndexOfBuffer], mBuffer);
+ } else if (mStartIndexOfBuffer == lastIndex - 1) {
+ final String startElement = mBuffer.toString()
+ .substring(0, mBuffer.length() - mLastElement.length())
+ .trim();
+ mOut.format("%s/* %s */ %s\n"
+ + "%s/* %s */ %s\n",
+ mIndent, mResourceNames[mStartIndexOfBuffer], startElement,
+ mIndent, mResourceNames[lastIndex], mLastElement);
} else {
- mOut.format("%s/* %d~ */\n"
+ mOut.format("%s/* %s ~ */\n"
+ "%s%s\n"
- + "%s/* ~%d */\n", mIndent, mBufferedIndex,
+ + "%s/* ~ %s */\n",
+ mIndent, mResourceNames[mStartIndexOfBuffer],
mIndent, mBuffer,
- mIndent, lastIndex);
+ mIndent, mResourceNames[lastIndex]);
}
mBuffer.setLength(0);
mBufferedLen = 0;
}
- public void outCommentLines(String lines) {
+ public void outCommentLines(final String lines) {
flush();
mOut.print(lines);
- mFixedElement = null;
+ mLastElement = null;
}
- public void outElement(String element) {
- if (!element.equals(mFixedElement)) {
+ public void outElement(final String element) {
+ if (!element.equals(mLastElement)) {
flush();
- mBufferedIndex = mCurrentIndex;
+ mStartIndexOfBuffer = mCurrentIndex;
}
final int nextLen = mBufferedLen + " ".length() + element.length();
if (mBufferedLen != 0 && nextLen < mMaxWidth) {
+ // Element can fit in the current line.
mBuffer.append(' ');
mBuffer.append(element);
mBufferedLen = nextLen;
} else {
+ // Element should be on the next line.
if (mBufferedLen != 0) {
mBuffer.append('\n');
mBuffer.append(mIndent);
@@ -84,6 +99,6 @@ public class ArrayInitializerFormatter {
mBufferedLen = element.length();
}
mCurrentIndex++;
- mFixedElement = element;
+ mLastElement = element;
}
}
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..e9d6c864f 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
@@ -25,9 +25,11 @@ import java.io.LineNumberReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Locale;
import java.util.jar.JarFile;
+import java.util.regex.Pattern;
public class MoreKeysResources {
private static final String TEXT_RESOURCE_NAME = "donottranslate-more-keys.xml";
@@ -38,7 +40,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";
@@ -48,8 +49,19 @@ public class MoreKeysResources {
// Language to string resources map.
private final HashMap<String, StringResourceMap> mResourcesMap =
new HashMap<String, StringResourceMap>();
- // Name to id map.
- private final HashMap<String, Integer> mNameToIdMap = new HashMap<String,Integer>();
+ // Sorted languages list. The language is taken from string resource directories
+ // (values-<language>/) or {@link #DEFAULT_LANGUAGE_NAME} for the default string resource
+ // directory (values/).
+ private final ArrayList<String> mSortedLanguagesList = new ArrayList<String>();
+ // Default string resources map.
+ private final StringResourceMap mDefaultResourceMap;
+ // Histogram of string resource names. This is used to sort {@link #mSortedResourceNames}.
+ private final HashMap<String, Integer> mNameHistogram = new HashMap<String, Integer>();
+ // Sorted string resource names array; Descending order of histogram count.
+ // The string resource name is specified as an attribute "name" in string resource files.
+ // The string resource can be accessed by specifying name "!text/<name>"
+ // via {@link KeyboardTextsSet#getText(String)}.
+ private final String[] mSortedResourceNames;
public MoreKeysResources(final JarFile jar) {
mJar = jar;
@@ -66,6 +78,45 @@ public class MoreKeysResources {
close(stream);
}
}
+ mDefaultResourceMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
+ mSortedLanguagesList.addAll(mResourcesMap.keySet());
+ Collections.sort(mSortedLanguagesList);
+
+ // Initialize name histogram and names list.
+ final HashMap<String, Integer> nameHistogram = mNameHistogram;
+ final ArrayList<String> resourceNamesList = new ArrayList<String>();
+ for (final StringResource res : mDefaultResourceMap.getResources()) {
+ nameHistogram.put(res.mName, 0); // Initialize histogram value.
+ resourceNamesList.add(res.mName);
+ }
+ // Make name histogram.
+ for (final String language : mResourcesMap.keySet()) {
+ final StringResourceMap resMap = mResourcesMap.get(language);
+ if (resMap == mDefaultResourceMap) continue;
+ for (final StringResource res : resMap.getResources()) {
+ if (!mDefaultResourceMap.contains(res.mName)) {
+ throw new RuntimeException(res.mName + " in " + language
+ + " doesn't have default resource");
+ }
+ final int histogramValue = nameHistogram.get(res.mName);
+ nameHistogram.put(res.mName, histogramValue + 1);
+ }
+ }
+ // Sort names list.
+ Collections.sort(resourceNamesList, new Comparator<String>() {
+ @Override
+ public int compare(final String leftName, final String rightName) {
+ final int leftCount = nameHistogram.get(leftName);
+ final int rightCount = nameHistogram.get(rightName);
+ // Descending order of histogram count.
+ if (leftCount > rightCount) return -1;
+ if (leftCount < rightCount) return 1;
+ // TODO: Add further criteria to order the same histogram value names to be able to
+ // minimize footprints of string resources arrays.
+ return 0;
+ }
+ });
+ mSortedResourceNames = resourceNamesList.toArray(new String[resourceNamesList.size()]);
}
private static String getLanguageFromResDir(final String dirName) {
@@ -133,56 +184,47 @@ public class MoreKeysResources {
}
private void dumpNames(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
- int id = 0;
- for (final StringResource res : defaultResMap.getResources()) {
- out.format(" /* %2d */ \"%s\",\n", id, res.mName);
- mNameToIdMap.put(res.mName, id);
- id++;
+ final int namesCount = mSortedResourceNames.length;
+ for (int index = 0; index < namesCount; index++) {
+ final String name = mSortedResourceNames[index];
+ final int histogramValue = mNameHistogram.get(name);
+ out.format(" /* %3d:%2d */ \"%s\",\n", index, histogramValue, name);
}
}
private void dumpDefaultTexts(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
- dumpTextsInternal(out, defaultResMap, defaultResMap);
+ final int outputArraySize = dumpTextsInternal(out, mDefaultResourceMap);
+ mDefaultResourceMap.setOutputArraySize(outputArraySize);
+ }
+
+ private static String getArrayNameForLanguage(final String language) {
+ return "LANGUAGE_" + language;
}
private void dumpTexts(final PrintStream out) {
- final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
- final ArrayList<String> allLanguages = new ArrayList<String>();
- allLanguages.addAll(mResourcesMap.keySet());
- Collections.sort(allLanguages);
- for (final String language : allLanguages) {
- if (language.equals(DEFAULT_LANGUAGE_NAME)) {
- continue;
- }
- out.format(" /* Language %s: %s */\n", language, getLanguageDisplayName(language));
- out.format(" private static final String[] " + ARRAY_NAME_FOR_LANGUAGE + " = {\n",
- language);
+ for (final String language : mSortedLanguagesList) {
final StringResourceMap resMap = mResourcesMap.get(language);
- for (final StringResource res : resMap.getResources()) {
- if (!defaultResMap.contains(res.mName)) {
- throw new RuntimeException(res.mName + " in " + language
- + " doesn't have default resource");
- }
- }
- dumpTextsInternal(out, resMap, defaultResMap);
+ if (resMap == mDefaultResourceMap) continue;
+ out.format(" /* Language %s: %s */\n", language, getLanguageDisplayName(language));
+ out.format(" private static final String[] " + getArrayNameForLanguage(language)
+ + " = {\n");
+ final int outputArraySize = dumpTextsInternal(out, resMap);
+ resMap.setOutputArraySize(outputArraySize);
out.format(" };\n\n");
}
}
private void dumpLanguageMap(final PrintStream out) {
- final ArrayList<String> allLanguages = new ArrayList<String>();
- allLanguages.addAll(mResourcesMap.keySet());
- Collections.sort(allLanguages);
- for (final String language : allLanguages) {
+ for (final String language : mSortedLanguagesList) {
+ 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,14 +236,17 @@ public class MoreKeysResources {
return locale.getDisplayName(Locale.ENGLISH);
}
- private static void dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,
- final StringResourceMap defaultResMap) {
+ private int dumpTextsInternal(final PrintStream out, final StringResourceMap resMap) {
final ArrayInitializerFormatter formatter =
- new ArrayInitializerFormatter(out, 100, " ");
+ new ArrayInitializerFormatter(out, 100, " ", mSortedResourceNames);
+ int outputArraySize = 0;
boolean successiveNull = false;
- for (final StringResource defaultRes : defaultResMap.getResources()) {
- if (resMap.contains(defaultRes.mName)) {
- final StringResource res = resMap.get(defaultRes.mName);
+ final int namesCount = mSortedResourceNames.length;
+ for (int index = 0; index < namesCount; index++) {
+ final String name = mSortedResourceNames[index];
+ final StringResource res = resMap.get(name);
+ if (res != null) {
+ // TODO: Check whether the resource value is equal to the default.
if (res.mComment != null) {
formatter.outCommentLines(addPrefix(" // ", res. mComment));
}
@@ -212,6 +257,7 @@ public class MoreKeysResources {
formatter.outElement(String.format("\"%s\",", escaped));
}
successiveNull = false;
+ outputArraySize = formatter.getCurrentIndex();
} else {
formatter.outElement("null,");
successiveNull = true;
@@ -220,6 +266,7 @@ public class MoreKeysResources {
if (!successiveNull) {
formatter.flush();
}
+ return outputArraySize;
}
private static String addPrefix(final String prefix, final String lines) {
@@ -241,26 +288,10 @@ public class MoreKeysResources {
sb.append(String.format("\\u%04X", (int)c));
}
}
- return replaceIncompatibleEscape(sb.toString());
- }
-
- private static String replaceIncompatibleEscape(final String text) {
- String t = text;
- t = replaceAll(t, "\\?", "?");
- t = replaceAll(t, "\\@", "@");
- t = replaceAll(t, "@string/", "!text/");
- return t;
- }
-
- private static String replaceAll(final String text, final String target, final String replace) {
- String t = text;
- while (t.indexOf(target) >= 0) {
- t = t.replace(target, replace);
- }
- return t;
+ return sb.toString();
}
- private static void close(Closeable stream) {
+ private static void close(final Closeable stream) {
try {
if (stream != null) {
stream.close();
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";