Reset to 9bd6dac4708ad94fd0257c53e977df62b152e20c

The bulk merge from -bayo to klp-dev should not have been merged to master.

Change-Id: I527a03a76f5247e4939a672f27c314dc11cbb854
diff --git a/tools/dicttool/Android.mk b/tools/dicttool/Android.mk
index 3d09c05..895e4a2 100644
--- a/tools/dicttool/Android.mk
+++ b/tools/dicttool/Android.mk
@@ -30,6 +30,7 @@
 USED_TARGETTED_UTILS := \
         $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/ByteArrayDictBuffer.java \
         $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/CollectionUtils.java \
+        $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/FileUtils.java \
         $(LATINIME_CORE_SOURCE_DIRECTORY)/utils/JniUtils.java
 
 DICTTOOL_ONDEVICE_TESTS_DIRECTORY := \
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
index 5c7e8b4..b3543a0 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/DictionaryMaker.java
@@ -159,9 +159,9 @@
                     if (OPTION_VERSION_2.equals(arg)) {
                         // Do nothing, this is the default
                     } else if (OPTION_VERSION_3.equals(arg)) {
-                        outputBinaryFormatVersion = 3;
+                        outputBinaryFormatVersion = FormatSpec.VERSION3;
                     } else if (OPTION_VERSION_4.equals(arg)) {
-                        outputBinaryFormatVersion = 4;
+                        outputBinaryFormatVersion = FormatSpec.VERSION4;
                     } else if (OPTION_HELP.equals(arg)) {
                         displayHelp();
                     } else {
@@ -358,7 +358,7 @@
         final File outputFile = new File(outputFilename);
         final FormatSpec.FormatOptions formatOptions = new FormatSpec.FormatOptions(version);
         final DictEncoder dictEncoder;
-        if (version == 4) {
+        if (version == FormatSpec.VERSION4) {
             dictEncoder = new Ver4DictEncoder(outputFile);
         } else {
             dictEncoder = new Ver3DictEncoder(outputFile);
diff --git a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl b/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
index 4cd9c23..a8ac981 100644
--- a/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
+++ b/tools/make-keyboard-text/res/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.tmpl
@@ -87,11 +87,11 @@
         return (text == null) ? LANGUAGE_DEFAULT[id] : text;
     }
 
+    // These texts' name should be aligned with the @string/<name> in
+    // values*/strings-action-keys.xml.
     private static final String[] RESOURCE_NAMES = {
-        // These texts' name should be aligned with the @string/<name> in values/strings.xml.
         // Labels for action.
         "label_go_key",
-        // "label_search_key",
         "label_send_key",
         "label_next_key",
         "label_done_key",
@@ -113,6 +113,8 @@
     };
 
     /* @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 = {
         /* @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 8b86b1b..f8050a3 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
@@ -65,24 +65,27 @@
     <!-- U+060C: "،" ARABIC COMMA -->
     <string name="keylabel_for_comma">&#x060C;</string>
     <string name="more_keys_for_comma">"\\,"</string>
+    <!-- U+0651: "ّ" ARABIC SHADDA -->
+    <string name="keyhintlabel_for_period">&#x0651;</string>
+    <string name="more_keys_for_period">!text/more_keys_for_arabic_diacritics</string>
+    <string name="keyhintlabel_for_tablet_period">&#x0651;</string>
+    <string name="more_keys_for_tablet_period">!text/more_keys_for_arabic_diacritics</string>
     <string name="keylabel_for_symbols_question">&#x061F;</string>
     <string name="keylabel_for_symbols_semicolon">&#x061B;</string>
     <!-- U+066A: "٪" ARABIC PERCENT SIGN -->
     <string name="keylabel_for_symbols_percent">&#x066A;</string>
-    <string name="more_keys_for_symbols_question">\?</string>
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <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>
-    <!-- U+060C: "،" ARABIC COMMA
-         U+061B: "؛" ARABIC SEMICOLON
-         U+061F: "؟" ARABIC QUESTION MARK -->
-    <string name="keylabel_for_apostrophe">&#x060C;</string>
-    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
     <!-- U+061F: "؟" ARABIC QUESTION MARK
          U+060C: "،" ARABIC COMMA
          U+061B: "؛" ARABIC SEMICOLON -->
+    <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_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
     <!-- U+266A: "♪" EIGHTH NOTE -->
     <string name="more_keys_for_bullet">&#x266A;</string>
     <!-- U+2605: "★" BLACK STAR
@@ -121,5 +124,4 @@
     <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
     <!-- Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. -->
     <string name="more_keys_for_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0652;|&#x0652;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0651;|&#x0651;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064F;|&#x064F;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
-    <string name="keyhintlabel_for_arabic_diacritics">&#x0651;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-be/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-be-rBY/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-be/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-be-rBY/donottranslate-more-keys.xml
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 6639373..f63e85b 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
@@ -72,7 +72,7 @@
     <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_period">\?,&#x00B7;</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-de/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
index 9dc8717..bb8bb72 100644
--- a/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-de/donottranslate-more-keys.xml
@@ -55,6 +55,18 @@
     <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
          U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
     <string name="more_keys_for_n">&#x00F1;,&#x0144;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="keylabel_for_swiss_row1_11">&#x00FC;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="more_keys_for_swiss_row1_11">&#x00E8;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keylabel_for_swiss_row2_10">&#x00F6;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="more_keys_for_swiss_row2_10">&#x00E9;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keylabel_for_swiss_row2_11">&#x00E4;</string>
+    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="more_keys_for_swiss_row2_11">&#x00E0;</string>
     <string name="single_quotes">!text/single_9qm_lqm</string>
     <string name="double_quotes">!text/double_9qm_lqm</string>
     <string name="single_angle_quotes">!text/single_raqm_laqm</string>
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 8e6b4ee..f4fe7f7 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
@@ -67,16 +67,7 @@
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
     <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
-    <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
-    <string name="keylabel_for_spanish_row2_10">&#x00F1;</string>
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
          U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_punctuation">"!fixedColumnOrder!4,;,!,\\,,\?,:,&#x00A1;,\@,&#x00BF;"</string>
-    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_tablet_comma">"!,&#x00A1;"</string>
-    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_period">"\?,&#x00BF;"</string>
-    <string name="keylabel_for_apostrophe">\"</string>
-    <string name="keyhintlabel_for_apostrophe">\'</string>
-    <string name="more_keys_for_apostrophe">\'</string>
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!9,&#x00A1;,;,/,(,),#,!,\\,,\?,&#x00BF;,&amp;,\\%,+,\",-,:,',\@"</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-et/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-et/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
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 ab4fbda..5bcfe7f 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
@@ -65,11 +65,17 @@
     <!-- U+060C: "،" ARABIC COMMA -->
     <string name="keylabel_for_comma">&#x060C;</string>
     <string name="more_keys_for_comma">"\\,"</string>
+    <!-- U+064B: "ً" ARABIC FATHATAN -->
+    <string name="keyhintlabel_for_period">&#x064B;</string>
+    <string name="more_keys_for_period">!text/more_keys_for_arabic_diacritics</string>
+    <string name="keyhintlabel_for_tablet_period">&#x064B;</string>
+    <string name="more_keys_for_tablet_period">!text/more_keys_for_arabic_diacritics</string>
     <string name="keylabel_for_symbols_question">&#x061F;</string>
     <string name="keylabel_for_symbols_semicolon">&#x061B;</string>
     <!-- U+066A: "٪" ARABIC PERCENT SIGN -->
     <string name="keylabel_for_symbols_percent">&#x066A;</string>
-    <string name="more_keys_for_symbols_question">\?</string>
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <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>
@@ -79,13 +85,9 @@
          U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
          U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
     <string name="keylabel_for_tablet_comma">"&#x060C;"</string>
-    <string name="keyhintlabel_for_tablet_comma">"!"</string>
-    <string name="more_keys_for_tablet_comma">"!,\\,"</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="keyhintlabel_for_period">"&#x061F;"</string>
-    <string name="more_keys_for_period">"&#x061F;,\?"</string>
-    <string name="keylabel_for_apostrophe">&#x060C;</string>
-    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
-    <string name="more_keys_for_apostrophe">"!fixedColumnOrder!4,:,!,&#x061F;,&#x061B;,-,/,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;"</string>
     <!-- U+FDFC: "﷼" RIAL SIGN -->
     <string name="keylabel_for_currency">&#xFDFC;</string>
     <!-- U+061F: "؟" ARABIC QUESTION MARK
@@ -130,5 +132,4 @@
     <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
     <!-- Note: The space character is needed as a preceding letter to draw Arabic diacritics characters correctly. -->
     <string name="more_keys_for_arabic_diacritics">"!fixedColumnOrder!7,&#x20;&#x0655;|&#x0655;,&#x20;&#x0652;|&#x0652;,&#x20;&#x0651;|&#x0651;,&#x20;&#x064C;|&#x064C;,&#x20;&#x064D;|&#x064D;,&#x20;&#x064B;|&#x064B;,&#x20;&#x0654;|&#x0654;,&#x20;&#x0656;|&#x0656;,&#x20;&#x0670;|&#x0670;,&#x20;&#x0653;|&#x0653;,&#x20;&#x064F;|&#x064F;,&#x20;&#x0650;|&#x0650;,&#x20;&#x064E;|&#x064E;,&#x0640;&#x0640;&#x0640;|&#x0640;"</string>
-    <string name="keyhintlabel_for_arabic_diacritics">&#x064B;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
index 7b11a18..6656776 100644
--- a/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fr/donottranslate-more-keys.xml
@@ -65,4 +65,16 @@
     <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x010D;</string>
     <!-- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
     <string name="more_keys_for_y">%,&#x00FF;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE -->
+    <string name="keylabel_for_swiss_row1_11">&#x00E8;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="more_keys_for_swiss_row1_11">&#x00FC;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE -->
+    <string name="keylabel_for_swiss_row2_10">&#x00E9;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="more_keys_for_swiss_row2_10">&#x00F6;</string>
+    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE -->
+    <string name="keylabel_for_swiss_row2_11">&#x00E0;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="more_keys_for_swiss_row2_11">&#x00E4;</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
similarity index 77%
rename from tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
index 2f34128..a94d50e 100644
--- a/tools/make-keyboard-text/res/values-hy/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-hy-rAM/donottranslate-more-keys.xml
@@ -29,12 +29,18 @@
     <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,!,?,\\,,.,&#x058A;,&#x055C;,&#x055D;,&#x055E;,:,;,\@,&#x0559;,&#x055A;,&#x055B;,&#x055F;"</string>
     <!-- U+055E: "՞" ARMENIAN QUESTION MARK -->
     <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_symbols_question">&#x055E;,&#x00BF;</string>
+    <string name="more_keys_for_question">&#x055E;,&#x00BF;</string>
     <!-- U+055C: "՜" ARMENIAN EXCLAMATION MARK -->
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_symbols_exclamation">&#x055C;,&#x00A1;</string>
+    <string name="more_keys_for_exclamation">&#x055C;,&#x00A1;</string>
     <!-- U+058F: "֏" ARMENIAN DRAM SIGN -->
     <!-- TODO: Enable this when we have glyph for the following letter
          <string name="keylabel_for_currency">&#x058F;</string>
     -->
+    <!-- U+055D: "՝" ARMENIAN COMMA -->
+    <string name="keylabel_for_tablet_comma">&#x055D;</string>
+    <!-- U+0589: "։" ARMENIAN FULL STOP -->
+    <string name="keylabel_for_period">&#x0589;</string>
+    <string name="keylabel_for_tablet_period">&#x0589;</string>
+    <string name="more_keys_for_tablet_period">!text/more_keys_for_punctuation</string>
 </resources>
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 994e35a..e231a39 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
@@ -29,6 +29,7 @@
          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>
@@ -54,8 +55,4 @@
     <string name="double_angle_quotes">!text/double_laqm_raqm_rtl</string>
     <!-- U+20AA: "₪" NEW SHEQEL SIGN -->
     <string name="keylabel_for_currency">&#x20AA;</string>
-    <string name="keyhintlabel_for_tablet_comma">!</string>
-    <string name="more_keys_for_tablet_comma">!</string>
-    <string name="keyhintlabel_for_period">\?</string>
-    <string name="more_keys_for_period">\?</string>
 </resources>
diff --git a/tools/make-keyboard-text/res/values-ka/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ka-rGE/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-ka/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-ka-rGE/donottranslate-more-keys.xml
diff --git a/tools/make-keyboard-text/res/values-km/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-km-rKH/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-km/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-km-rKH/donottranslate-more-keys.xml
diff --git a/tools/make-keyboard-text/res/values-lo/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lo-rLA/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-lo/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-lo-rLA/donottranslate-more-keys.xml
diff --git a/tools/make-keyboard-text/res/values-mn/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-mn-rMN/donottranslate-more-keys.xml
similarity index 100%
rename from tools/make-keyboard-text/res/values-mn/donottranslate-more-keys.xml
rename to tools/make-keyboard-text/res/values-mn-rMN/donottranslate-more-keys.xml
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 3c59b4b..ceb46dc 100644
--- a/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values/donottranslate-more-keys.xml
@@ -63,6 +63,12 @@
     <string name="keylabel_for_south_slavic_row3_8"></string>
     <string name="more_keys_for_cyrillic_ie"></string>
     <string name="more_keys_for_cyrillic_i"></string>
+    <string name="keylabel_for_swiss_row1_11"></string>
+    <string name="keylabel_for_swiss_row2_10"></string>
+    <string name="keylabel_for_swiss_row2_11"></string>
+    <string name="more_keys_for_swiss_row1_11"></string>
+    <string name="more_keys_for_swiss_row2_10"></string>
+    <string name="more_keys_for_swiss_row2_11"></string>
     <!-- Label for "switch to alphabetic" key. -->
     <string name="label_to_alpha_key">ABC</string>
     <string name="single_quotes">!text/single_lqm_rqm</string>
@@ -78,6 +84,7 @@
     <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>
     <!-- U+2020: "†" DAGGER
          U+2021: "‡" DOUBLE DAGGER
          U+2605: "★" BLACK STAR -->
@@ -103,7 +110,6 @@
     <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_arabic_diacritics"></string>
-    <string name="keyhintlabel_for_arabic_diacritics"></string>
     <string name="keylabel_for_symbols_1">1</string>
     <string name="keylabel_for_symbols_2">2</string>
     <string name="keylabel_for_symbols_3">3</string>
@@ -154,34 +160,37 @@
     <!-- U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
          U+2205: "∅" EMPTY SET -->
     <string name="more_keys_for_symbols_0">&#x207F;,&#x2205;</string>
+    <!-- Comma key -->
     <string name="keylabel_for_comma">,</string>
     <string name="more_keys_for_comma"></string>
+    <string name="keylabel_for_tablet_comma">,</string>
+    <string name="keyhintlabel_for_tablet_comma"></string>
+    <string name="more_keys_for_tablet_comma"></string>
+    <!-- Period key -->
+    <string name="keylabel_for_period">.</string>
+    <string name="keyhintlabel_for_period"></string>
+    <string name="more_keys_for_period">!text/more_keys_for_punctuation</string>
+    <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_semicolon">;</string>
     <string name="keylabel_for_symbols_percent">%</string>
     <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK -->
-    <string name="more_keys_for_symbols_exclamation">&#x00A1;</string>
+    <string name="more_keys_for_exclamation">&#x00A1;</string>
     <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
-    <string name="more_keys_for_symbols_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>
-    <string name="keylabel_for_tablet_comma">,</string>
-    <string name="keyhintlabel_for_tablet_comma"></string>
-    <string name="more_keys_for_tablet_comma"></string>
-    <string name="keyhintlabel_for_period"></string>
-    <!-- U+2026: "…" HORIZONTAL ELLIPSIS -->
-    <string name="more_keys_for_period">&#x2026;</string>
-    <string name="keylabel_for_apostrophe">\'</string>
-    <string name="keyhintlabel_for_apostrophe">\"</string>
-    <string name="more_keys_for_apostrophe">\"</string>
     <string name="more_keys_for_q"></string>
     <string name="more_keys_for_x"></string>
     <string name="keylabel_for_q">q</string>
     <string name="keylabel_for_w">w</string>
     <string name="keylabel_for_y">y</string>
     <string name="keylabel_for_x">x</string>
-    <string name="keylabel_for_spanish_row2_10"></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="settings_as_more_key">!icon/settings_key|!code/key_settings</string>
     <string name="shortcut_as_more_key">!icon/shortcut_key|!code/key_shortcut</string>
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java
new file mode 100644
index 0000000..9fdc1f6
--- /dev/null
+++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/LocaleUtils.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.tools;
+
+import java.util.HashMap;
+import java.util.Locale;
+
+/**
+ * A class to help with handling Locales in string form.
+ *
+ * This is a subset of com/android/inputmethod/latin/utils/LocaleUtils.java in order to use
+ * for the make-keyboard-text tool.
+ */
+public final class LocaleUtils {
+    private LocaleUtils() {
+        // Intentional empty constructor for utility class.
+    }
+
+    private static final HashMap<String, Locale> sLocaleCache = new HashMap<String, Locale>();
+
+    /**
+     * Creates a locale from a string specification.
+     */
+    public static Locale constructLocaleFromString(final String localeStr) {
+        if (localeStr == null) {
+            return null;
+        }
+        synchronized (sLocaleCache) {
+            Locale retval = sLocaleCache.get(localeStr);
+            if (retval != null) {
+                return retval;
+            }
+            String[] localeParams = localeStr.split("_", 3);
+            if (localeParams.length == 1) {
+                retval = new Locale(localeParams[0]);
+            } else if (localeParams.length == 2) {
+                retval = new Locale(localeParams[0], localeParams[1]);
+            } else if (localeParams.length == 3) {
+                retval = new Locale(localeParams[0], localeParams[1], localeParams[2]);
+            }
+            if (retval != null) {
+                sLocaleCache.put(localeStr, retval);
+            }
+            return retval;
+        }
+    }
+}
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 2643e01..a883830 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
@@ -37,7 +37,7 @@
     private static final String MARK_DEFAULT_TEXTS = "@DEFAULT_TEXTS@";
     private static final String MARK_TEXTS = "@TEXTS@";
     private static final String MARK_LANGUAGES_AND_TEXTS = "@LANGUAGES_AND_TEXTS@";
-    private static final String DEFAUT_LANGUAGE_NAME = "DEFAULT";
+    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";
 
@@ -72,7 +72,7 @@
         final int languagePos = dirName.indexOf('-');
         if (languagePos < 0) {
             // Default resource.
-            return DEFAUT_LANGUAGE_NAME;
+            return DEFAULT_LANGUAGE_NAME;
         }
         final String language = dirName.substring(languagePos + 1);
         final int countryPos = language.indexOf("-r");
@@ -84,10 +84,12 @@
 
     public void writeToJava(final String outDir) {
         final ArrayList<String> list = JarUtils.getNameListing(mJar, JAVA_TEMPLATE);
-        if (list.isEmpty())
+        if (list.isEmpty()) {
             throw new RuntimeException("Can't find java template " + JAVA_TEMPLATE);
-        if (list.size() > 1)
+        }
+        if (list.size() > 1) {
             throw new RuntimeException("Found multiple java template " + JAVA_TEMPLATE);
+        }
         final String template = list.get(0);
         final String javaPackage = template.substring(0, template.lastIndexOf('/'));
         PrintStream ps = null;
@@ -131,7 +133,7 @@
     }
 
     private void dumpNames(final PrintStream out) {
-        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+        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);
@@ -141,17 +143,17 @@
     }
 
     private void dumpDefaultTexts(final PrintStream out) {
-        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME);
         dumpTextsInternal(out, defaultResMap, defaultResMap);
     }
 
     private void dumpTexts(final PrintStream out) {
-        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+        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(DEFAUT_LANGUAGE_NAME)) {
+            if (language.equals(DEFAULT_LANGUAGE_NAME)) {
                 continue;
             }
             out.format("    /* Language %s: %s */\n", language, getLanguageDisplayName(language));
@@ -174,17 +176,22 @@
         allLanguages.addAll(mResourcesMap.keySet());
         Collections.sort(allLanguages);
         for (final String language : allLanguages) {
-            out.format("        \"%s\", " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
-                    language, language, getLanguageDisplayName(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));
         }
     }
 
     private static String getLanguageDisplayName(final String language) {
-        if (language.equals(NO_LANGUAGE_CODE)) {
+        final Locale locale = LocaleUtils.constructLocaleFromString(language);
+        if (locale.getLanguage().equals(NO_LANGUAGE_CODE)) {
             return NO_LANGUAGE_DISPLAY_NAME;
-        } else {
-            return new Locale(language).getDisplayLanguage();
         }
+        return locale.getDisplayName(Locale.ENGLISH);
     }
 
     private static void dumpTextsInternal(final PrintStream out, final StringResourceMap resMap,