diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 3feb43759..c64b3a4e0 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -47,6 +47,7 @@
     fr: French/azerty
     fr_CA: French (Canada)/qwerty
     fr_CH: French (Switzerland)/swiss
+    gl_ES: Galician (Spain)/spanish
     hi: Hindi/hindi
     hr: Croatian/qwertz
     hu: Hungarian/qwertz
@@ -303,6 +304,14 @@
             android:imeSubtypeExtraValue="KeyboardLayoutSet=swiss,AsciiCapable,SupportTouchPositionCorrection,EmojiCapable"
             android:isAsciiCapable="true"
     />
+    <subtype android:icon="@drawable/ic_ime_switcher_dark"
+            android:label="@string/subtype_generic"
+            android:subtypeId="0xb939573c"
+            android:imeSubtypeLocale="gl_ES"
+            android:imeSubtypeMode="keyboard"
+            android:imeSubtypeExtraValue="KeyboardLayoutSet=spanish,AsciiCapable,EmojiCapable"
+            android:isAsciiCapable="true"
+    />
     <subtype android:icon="@drawable/ic_ime_switcher_dark"
             android:label="@string/subtype_generic"
             android:subtypeId="0x39753b7f"
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index ddf3d5067..2ac51de32 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -79,15 +79,15 @@ public final class KeyboardTextsTable {
 
     private static final String[] NAMES = {
     //  /* index:histogram */ "name",
-        /*   0:31 */ "more_keys_for_a",
-        /*   1:31 */ "more_keys_for_o",
-        /*   2:29 */ "more_keys_for_u",
-        /*   3:28 */ "more_keys_for_e",
-        /*   4:27 */ "more_keys_for_i",
-        /*   5:23 */ "double_quotes",
-        /*   6:22 */ "more_keys_for_c",
-        /*   7:22 */ "single_quotes",
-        /*   8:21 */ "more_keys_for_n",
+        /*   0:32 */ "more_keys_for_a",
+        /*   1:32 */ "more_keys_for_o",
+        /*   2:30 */ "more_keys_for_u",
+        /*   3:29 */ "more_keys_for_e",
+        /*   4:28 */ "more_keys_for_i",
+        /*   5:23 */ "more_keys_for_c",
+        /*   6:23 */ "double_quotes",
+        /*   7:22 */ "more_keys_for_n",
+        /*   8:22 */ "single_quotes",
         /*   9:21 */ "label_to_alpha_key",
         /*  10:20 */ "more_keys_for_s",
         /*  11:14 */ "more_keys_for_y",
@@ -256,12 +256,11 @@ public final class KeyboardTextsTable {
     /* Default texts */
     private static final String[] LANGUAGE_DEFAULT = {
         /* more_keys_for_a ~ */
-        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
-        /* ~ more_keys_for_i */
+        EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_lqm_rqm",
-        /* more_keys_for_c */ EMPTY,
-        /* single_quotes */ "!text/single_lqm_rqm",
         /* more_keys_for_n */ EMPTY,
+        /* single_quotes */ "!text/single_lqm_rqm",
         // Label for "switch to alphabetic" key.
         /* label_to_alpha_key */ "ABC",
         /* more_keys_for_s ~ */
@@ -506,14 +505,14 @@ public final class KeyboardTextsTable {
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* more_keys_for_i */ "\u00ED,\u00EC,\u00EF,\u00EE,\u012F,\u012B,\u0133",
-        /* double_quotes ~ */
-        null, null, null,
-        /* ~ single_quotes */
+        /* more_keys_for_c */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
-        /* label_to_alpha_key */ null,
-        /* more_keys_for_s */ null,
+        /* single_quotes ~ */
+        null, null, null,
+        /* ~ more_keys_for_s */
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* more_keys_for_y */ "\u00FD,\u0133",
@@ -523,7 +522,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_ar = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
         // U+200C: ZERO WIDTH NON-JOINER
@@ -680,13 +679,12 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes ~ */
-        null, null, null,
+        /* double_quotes ~ */
+        null, null, null, null,
         /* ~ label_to_alpha_key */
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -703,12 +701,11 @@ public final class KeyboardTextsTable {
     /* Language be_BY: Belarusian (Belarus) */
     private static final String[] LANGUAGE_be_BY = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -737,13 +734,12 @@ public final class KeyboardTextsTable {
     /* Language bg: Bulgarian */
     private static final String[] LANGUAGE_bg = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         // single_quotes of Bulgarian is default single_quotes_right_left.
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c ~ */
-        null, null, null,
-        /* ~ more_keys_for_n */
+        /* more_keys_for_n */ null,
+        /* single_quotes */ null,
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -795,17 +791,16 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
-        /* label_to_alpha_key ~ */
-        null, null, null, null, null, null,
+        /* single_quotes ~ */
+        null, null, null, null, null, null, null,
         /* ~ more_keys_for_t */
         // U+00B7: "·" MIDDLE DOT
         // U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
@@ -874,16 +869,16 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u00E7,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u0148,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -937,12 +932,12 @@ public final class KeyboardTextsTable {
         // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         /* more_keys_for_i */ "\u00ED,\u00EF",
-        /* double_quotes */ "!text/double_9qm_lqm",
         /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1011,12 +1006,12 @@ public final class KeyboardTextsTable {
         // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
         /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0117",
         /* more_keys_for_i */ null,
-        /* double_quotes */ "!text/double_9qm_lqm",
         /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1052,7 +1047,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_el = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0391: "Α" GREEK CAPITAL LETTER ALPHA
         // U+0392: "Β" GREEK CAPITAL LETTER BETA
@@ -1098,12 +1093,12 @@ public final class KeyboardTextsTable {
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* more_keys_for_c */ "\u00E7",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* more_keys_for_n */ "\u00F1",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* more_keys_for_s */ "\u00DF",
@@ -1164,13 +1159,12 @@ public final class KeyboardTextsTable {
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u0129,\u00EC,\u012F,\u012B,\u0131,\u0133",
-        /* double_quotes */ null,
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
         /* more_keys_for_c */ "\u0107,\u010D,\u00E7,\u010B",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -1178,6 +1172,7 @@ public final class KeyboardTextsTable {
         // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "ŋ" LATIN SMALL LETTER ENG
         /* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -1305,18 +1300,17 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
-        /* label_to_alpha_key ~ */
+        /* single_quotes ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-        null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_cyrillic_soft_sign */
         // U+00A1: "¡" INVERTED EXCLAMATION MARK
         // U+00BF: "¿" INVERTED QUESTION MARK
@@ -1370,16 +1364,16 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* more_keys_for_i */ "\u012B,\u00EC,\u012F,\u00ED,\u00EE,\u00EF,\u0131",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u00E7,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -1470,12 +1464,11 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
@@ -1485,7 +1478,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_fa = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0627: "ا" ARABIC LETTER ALEF
         // U+200C: ZERO WIDTH NON-JOINER
@@ -1720,13 +1713,12 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00EE,%,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,%,\u0107,\u010D",
-        /* single_quotes ~ */
-        null, null, null, null,
+        /* double_quotes ~ */
+        null, null, null, null, null,
         /* ~ more_keys_for_s */
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* more_keys_for_y */ "%,\u00FF",
@@ -1751,11 +1743,65 @@ public final class KeyboardTextsTable {
         /* more_keys_for_swiss_row2_11 */ "\u00E4",
     };
 
+    /* Language gl_ES: Gallegan (Spain) */
+    private static final String[] LANGUAGE_gl_ES = {
+        // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+        // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+        // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+        // U+00E6: "æ" LATIN SMALL LETTER AE
+        // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+        // U+00AA: "ª" FEMININE ORDINAL INDICATOR
+        /* more_keys_for_a */ "\u00E1,\u00E0,\u00E4,\u00E2,\u00E3,\u00E5,\u0105,\u00E6,\u0101,\u00AA",
+        // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+        // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+        // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "œ" LATIN SMALL LIGATURE OE
+        // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+        // U+00BA: "º" MASCULINE ORDINAL INDICATOR
+        /* more_keys_for_o */ "\u00F3,\u00F2,\u00F6,\u00F4,\u00F5,\u00F8,\u0153,\u014D,\u00BA",
+        // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+        // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+        // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+        // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+        // U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+        /* more_keys_for_u */ "\u00FA,\u00FC,\u00F9,\u00FB,\u016B",
+        // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+        // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+        // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+        // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+        // U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+        // U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+        // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+        /* more_keys_for_e */ "\u00E9,\u00E8,\u00EB,\u00EA,\u0119,\u0117,\u0113",
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+        /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
+        // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+        // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+        // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+        /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
+        /* double_quotes */ null,
+        // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+        // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+        /* more_keys_for_n */ "\u00F1,\u0144",
+    };
+
     /* Language hi: Hindi */
     private static final String[] LANGUAGE_hi = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
@@ -1811,15 +1857,15 @@ public final class KeyboardTextsTable {
         /* more_keys_for_a ~ */
         null, null, null, null, null,
         /* ~ more_keys_for_i */
-        /* double_quotes */ "!text/double_9qm_rqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* more_keys_for_c */ "\u010D,\u0107,\u00E7",
-        /* single_quotes */ "!text/single_9qm_rqm",
+        /* double_quotes */ "!text/double_9qm_rqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_rqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -1882,11 +1928,12 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EE,\u00EF,\u00EC,\u012F,\u012B",
-        /* double_quotes */ "!text/double_9qm_rqm",
         /* more_keys_for_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
+        /* more_keys_for_n */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
-        /* more_keys_for_n ~ */
-        null, null, null, null, null, null, null, null, null,
+        /* label_to_alpha_key ~ */
+        null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_g */
         /* single_angle_quotes */ "!text/single_raqm_laqm",
         /* double_angle_quotes */ "!text/double_raqm_laqm",
@@ -1896,7 +1943,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_hy_AM = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0531: "Ա" ARMENIAN CAPITAL LETTER AYB
         // U+0532: "Բ" ARMENIAN CAPITAL LETTER BEN
@@ -1984,12 +2031,12 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EE,\u00EC,\u012F,\u012B",
-        /* double_quotes */ "!text/double_9qm_lqm",
         /* more_keys_for_c */ null,
+        /* double_quotes */ "!text/double_9qm_lqm",
+        /* more_keys_for_n */ null,
         /* single_quotes */ "!text/single_9qm_lqm",
-        /* more_keys_for_n ~ */
-        null, null, null,
-        /* ~ more_keys_for_s */
+        /* label_to_alpha_key */ null,
+        /* more_keys_for_s */ null,
         // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
         // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
         /* more_keys_for_y */ "\u00FD,\u00FF",
@@ -2048,12 +2095,11 @@ public final class KeyboardTextsTable {
     /* Language iw: Hebrew */
     private static final String[] LANGUAGE_iw = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_rqm_9qm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_rqm_9qm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_rqm_9qm",
         // Label for "switch to alphabetic" key.
         // U+05D0: "א" HEBREW LETTER ALEF
         // U+05D1: "ב" HEBREW LETTER BET
@@ -2106,12 +2152,11 @@ public final class KeyboardTextsTable {
     /* Language ka_GE: Georgian (Georgia) */
     private static final String[] LANGUAGE_ka_GE = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+10D0: "ა" GEORGIAN LETTER AN
         // U+10D1: "ბ" GEORGIAN LETTER BAN
@@ -2123,7 +2168,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_kk = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -2179,7 +2224,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_km_KH = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+1780: "ក" KHMER LETTER KA
         // U+1781: "ខ" KHMER LETTER KHA
@@ -2202,7 +2247,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_ky = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -2245,7 +2290,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_lo_LA = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0E81: "ກ" LAO LETTER KO
         // U+0E82: "ຂ" LAO LETTER KHO SUNG
@@ -2306,16 +2351,16 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* more_keys_for_i */ "\u012F,\u012B,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u00E7,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2400,16 +2445,16 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* more_keys_for_i */ "\u012B,\u012F,\u00EC,\u00ED,\u00EE,\u00EF,\u0131",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u00E7,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2450,12 +2495,11 @@ public final class KeyboardTextsTable {
     /* Language mk: Macedonian */
     private static final String[] LANGUAGE_mk = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -2488,7 +2532,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_mn_MN = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -2505,7 +2549,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_my_MM = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+1000: "က" MYANMAR LETTER KA
         // U+1001: "ခ" MYANMAR LETTER KHA
@@ -2545,11 +2589,12 @@ public final class KeyboardTextsTable {
         // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
         /* more_keys_for_e */ "\u00E9,\u00E8,\u00EA,\u00EB,\u0119,\u0117,\u0113",
         /* more_keys_for_i */ null,
-        /* double_quotes */ "!text/double_9qm_rqm",
         /* more_keys_for_c */ null,
+        /* double_quotes */ "!text/double_9qm_rqm",
+        /* more_keys_for_n */ null,
         /* single_quotes */ "!text/single_9qm_rqm",
-        /* more_keys_for_n ~ */
-        null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+        /* label_to_alpha_key ~ */
+        null, null, null, null, null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_cyrillic_ie */
         // U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
         /* keylabel_for_nordic_row1_11 */ "\u00E5",
@@ -2570,7 +2615,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_ne_NP = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0915: "क" DEVANAGARI LETTER KA
         // U+0916: "ख" DEVANAGARI LETTER KHA
@@ -2663,12 +2708,12 @@ public final class KeyboardTextsTable {
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B,\u0133",
-        /* double_quotes */ "!text/double_9qm_rqm",
         /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_rqm",
+        /* double_quotes */ "!text/double_9qm_rqm",
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_rqm",
         /* label_to_alpha_key */ null,
         /* more_keys_for_s */ null,
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
@@ -2706,15 +2751,15 @@ public final class KeyboardTextsTable {
         // U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
         /* more_keys_for_e */ "\u0119,\u00E8,\u00E9,\u00EA,\u00EB,\u0117,\u0113",
         /* more_keys_for_i */ null,
-        /* double_quotes */ "!text/double_9qm_rqm",
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u0107,\u00E7,\u010D",
-        /* single_quotes */ "!text/single_9qm_rqm",
+        /* double_quotes */ "!text/double_9qm_rqm",
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* more_keys_for_n */ "\u0144,\u00F1",
+        /* single_quotes */ "!text/single_9qm_rqm",
         /* label_to_alpha_key */ null,
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2773,7 +2818,6 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EE,\u00EC,\u00EF,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
@@ -2815,10 +2859,10 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        /* double_quotes */ "!text/double_9qm_rqm",
         /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_rqm",
+        /* double_quotes */ "!text/double_9qm_rqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_rqm",
         /* label_to_alpha_key */ null,
         // U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2835,12 +2879,11 @@ public final class KeyboardTextsTable {
     /* Language ru: Russian */
     private static final String[] LANGUAGE_ru = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -2913,17 +2956,17 @@ public final class KeyboardTextsTable {
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         /* more_keys_for_i */ "\u00ED,\u012B,\u012F,\u00EC,\u00EE,\u00EF,\u0131",
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u00E7,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u0148,\u0146,\u00F1,\u0144",
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -2966,12 +3009,12 @@ public final class KeyboardTextsTable {
         /* more_keys_for_a ~ */
         null, null, null, null, null,
         /* ~ more_keys_for_i */
-        /* double_quotes */ "!text/double_9qm_lqm",
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         /* more_keys_for_c */ "\u010D,\u0107",
-        /* single_quotes */ "!text/single_9qm_lqm",
+        /* double_quotes */ "!text/double_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         /* label_to_alpha_key */ null,
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
         /* more_keys_for_s */ "\u0161",
@@ -2990,12 +3033,11 @@ public final class KeyboardTextsTable {
     /* Language sr: Serbian */
     private static final String[] LANGUAGE_sr = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // END: More keys definitions for Serbian (Cyrillic)
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
@@ -3079,16 +3121,16 @@ public final class KeyboardTextsTable {
         // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
         // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
         /* more_keys_for_i */ "\u00ED,\u00EC,\u00EE,\u00EF",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0148: "ň" LATIN SMALL LETTER N WITH CARON
         /* more_keys_for_n */ "\u0144,\u00F1,\u0148",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
         // U+0161: "š" LATIN SMALL LETTER S WITH CARON
@@ -3173,12 +3215,12 @@ public final class KeyboardTextsTable {
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* more_keys_for_c */ "\u00E7",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* more_keys_for_n */ "\u00F1",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* more_keys_for_s */ "\u00DF",
@@ -3192,7 +3234,7 @@ public final class KeyboardTextsTable {
     private static final String[] LANGUAGE_th = {
         /* more_keys_for_a ~ */
         null, null, null, null, null, null, null, null, null,
-        /* ~ more_keys_for_n */
+        /* ~ single_quotes */
         // Label for "switch to alphabetic" key.
         // U+0E01: "ก" THAI CHARACTER KO KAI
         // U+0E02: "ข" THAI CHARACTER KHO KHAI
@@ -3249,12 +3291,11 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u00ED,\u00EF,\u00EC,\u00EE,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         /* more_keys_for_n */ "\u00F1,\u0144",
@@ -3288,13 +3329,12 @@ public final class KeyboardTextsTable {
         // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         /* more_keys_for_i */ "\u0131,\u00EE,\u00EF,\u00EC,\u00ED,\u012F,\u012B",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u010D",
-        /* single_quotes ~ */
-        null, null, null,
+        /* double_quotes ~ */
+        null, null, null, null,
         /* ~ label_to_alpha_key */
         // U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
@@ -3311,12 +3351,11 @@ public final class KeyboardTextsTable {
     /* Language uk: Ukrainian */
     private static final String[] LANGUAGE_uk = {
         /* more_keys_for_a ~ */
-        null, null, null, null, null,
-        /* ~ more_keys_for_i */
+        null, null, null, null, null, null,
+        /* ~ more_keys_for_c */
         /* double_quotes */ "!text/double_9qm_lqm",
-        /* more_keys_for_c */ null,
-        /* single_quotes */ "!text/single_9qm_lqm",
         /* more_keys_for_n */ null,
+        /* single_quotes */ "!text/single_9qm_lqm",
         // Label for "switch to alphabetic" key.
         // U+0410: "А" CYRILLIC CAPITAL LETTER A
         // U+0411: "Б" CYRILLIC CAPITAL LETTER BE
@@ -3420,7 +3459,7 @@ public final class KeyboardTextsTable {
         // U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
         // U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW
         /* more_keys_for_i */ "\u00EC,\u00ED,\u1EC9,\u0129,\u1ECB",
-        /* double_quotes ~ */
+        /* more_keys_for_c ~ */
         null, null, null, null, null, null,
         /* ~ more_keys_for_s */
         // U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
@@ -3477,12 +3516,12 @@ public final class KeyboardTextsTable {
         // U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
         // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
         /* more_keys_for_i */ "\u00EE,\u00EF,\u00ED,\u012B,\u00EC",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         /* more_keys_for_c */ "\u00E7",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         /* more_keys_for_n */ "\u00F1",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         /* more_keys_for_s */ "\u00DF",
@@ -3546,14 +3585,13 @@ public final class KeyboardTextsTable {
         // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
         // U+0133: "ij" LATIN SMALL LIGATURE IJ
         /* more_keys_for_i */ "\u00EC,\u00ED,\u00EE,\u00EF,\u0129,\u012B,\u012D,\u012F,\u0131,\u0133",
-        /* double_quotes */ null,
         // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
         // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
         // U+0109: "ĉ" LATIN SMALL LETTER C WITH CIRCUMFLEX
         // U+010B: "ċ" LATIN SMALL LETTER C WITH DOT ABOVE
         // U+010D: "č" LATIN SMALL LETTER C WITH CARON
         /* more_keys_for_c */ "\u00E7,\u0107,\u0109,\u010B,\u010D",
-        /* single_quotes */ null,
+        /* double_quotes */ null,
         // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
         // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
         // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
@@ -3561,6 +3599,7 @@ public final class KeyboardTextsTable {
         // U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
         // U+014B: "ŋ" LATIN SMALL LETTER ENG
         /* more_keys_for_n */ "\u00F1,\u0144,\u0146,\u0148,\u0149,\u014B",
+        /* single_quotes */ null,
         /* label_to_alpha_key */ null,
         // U+00DF: "ß" LATIN SMALL LETTER SHARP S
         // U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
@@ -3646,10 +3685,11 @@ public final class KeyboardTextsTable {
         "eo", LANGUAGE_eo,    /*  26/128 Esperanto */
         "es", LANGUAGE_es,    /*   8/ 33 Spanish */
         "et", LANGUAGE_et_EE, /*  22/ 27 Estonian (Estonia) */
-        "eu", LANGUAGE_eu_ES, /*   7/  9 Basque (Spain) */
+        "eu", LANGUAGE_eu_ES, /*   7/  8 Basque (Spain) */
         "fa", LANGUAGE_fa,    /*  61/119 Persian */
         "fi", LANGUAGE_fi,    /*  10/ 34 Finnish */
         "fr", LANGUAGE_fr,    /*  13/ 92 French */
+        "gl", LANGUAGE_gl_ES, /*   7/  8 Gallegan (Spain) */
         "hi", LANGUAGE_hi,    /*  24/ 56 Hindi */
         "hr", LANGUAGE_hr,    /*   9/ 19 Croatian */
         "hu", LANGUAGE_hu,    /*   9/ 19 Hungarian */
@@ -3671,7 +3711,7 @@ public final class KeyboardTextsTable {
         "ne", LANGUAGE_ne_NP, /*  24/ 56 Nepali (Nepal) */
         "nl", LANGUAGE_nl,    /*   9/ 12 Dutch */
         "pl", LANGUAGE_pl,    /*  10/ 16 Polish */
-        "pt", LANGUAGE_pt,    /*   6/  7 Portuguese */
+        "pt", LANGUAGE_pt,    /*   6/  6 Portuguese */
         "rm", LANGUAGE_rm,    /*   1/  2 Raeto-Romance */
         "ro", LANGUAGE_ro,    /*   6/ 15 Romanian */
         "ru", LANGUAGE_ru,    /*   9/ 32 Russian */
@@ -3681,7 +3721,7 @@ public final class KeyboardTextsTable {
         "sv", LANGUAGE_sv,    /*  21/ 34 Swedish */
         "sw", LANGUAGE_sw,    /*   9/ 17 Swahili */
         "th", LANGUAGE_th,    /*   2/ 20 Thai */
-        "tl", LANGUAGE_tl,    /*   7/  9 Tagalog */
+        "tl", LANGUAGE_tl,    /*   7/  8 Tagalog */
         "tr", LANGUAGE_tr,    /*   7/ 17 Turkish */
         "uk", LANGUAGE_uk,    /*  11/ 80 Ukrainian */
         "vi", LANGUAGE_vi,    /*   8/ 20 Vietnamese */
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java
new file mode 100644
index 000000000..1472828a4
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsGalicianES.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 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.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Spanish;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * gl_ES: Galician (Spain)/spanish
+ */
+@SmallTest
+public class TestsGalicianES extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("gl", "ES");
+    private static final LayoutBase LAYOUT = new Spanish(new GalicianESCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class GalicianESCustomizer extends EuroCustomizer {
+        private final SpanishCustomizer mSpanishCustomizer;
+
+        public GalicianESCustomizer(final Locale locale) {
+            super(locale);
+            mSpanishCustomizer = new SpanishCustomizer(locale);
+        }
+
+        @Override
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+            return mSpanishCustomizer.setAccentedLetters(builder);
+        }
+    }
+}
diff --git a/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml
new file mode 100644
index 000000000..83dbe0e85
--- /dev/null
+++ b/tools/make-keyboard-text/res/values-gl-rES/donottranslate-more-keys.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E4;,&#x00E2;,&#x00E3;,&#x00E5;,&#x0105;,&#x00E6;,&#x0101;,&#x00AA;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
+    <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EB;,&#x00EA;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F2;,&#x00F6;,&#x00F4;,&#x00F5;,&#x00F8;,&#x0153;,&#x014D;,&#x00BA;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00F9;,&#x00FB;,&#x016B;</string>
+    <!-- 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+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         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>
+</resources>