Generate KeyboardLabelsSet from donottranslate-more-keys.xml

This change introduces makelabel tool that reads all languages'
donottranslate-more-keys and generate KeyboardLabelsSet.java source
file. The makelabel command must be invoked prior to compile LatinIME.

Change-Id: I7515c7919c535e30f9c80a37bdc831d0f682cd43
diff --git a/tools/makelabel/Android.mk b/tools/makelabel/Android.mk
new file mode 100644
index 0000000..9fa8650
--- /dev/null
+++ b/tools/makelabel/Android.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2012 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.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES += $(call all-java-files-under,src)
+LOCAL_JAR_MANIFEST := etc/manifest.txt
+LOCAL_JAVA_RESOURCE_DIRS := res
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE := makelabel
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+include $(LOCAL_PATH)/etc/Android.mk
diff --git a/tools/makelabel/etc/Android.mk b/tools/makelabel/etc/Android.mk
new file mode 100644
index 0000000..2d2e9a6
--- /dev/null
+++ b/tools/makelabel/etc/Android.mk
@@ -0,0 +1,21 @@
+# Copyright (C) 2012 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.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := eng
+
+LOCAL_PREBUILT_EXECUTABLES := makelabel
+include $(BUILD_HOST_PREBUILT)
diff --git a/tools/makelabel/etc/makelabel b/tools/makelabel/etc/makelabel
new file mode 100755
index 0000000..44a05b6
--- /dev/null
+++ b/tools/makelabel/etc/makelabel
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Copyright 2012, 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.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=makelabel.jar
+frameworkdir="$progdir"
+if [ ! -r "$frameworkdir/$jarfile" ]
+then
+    frameworkdir=`dirname "$progdir"`/tools/lib
+    libdir=`dirname "$progdir"`/tools/lib
+fi
+if [ ! -r "$frameworkdir/$jarfile" ]
+then
+    frameworkdir=`dirname "$progdir"`/framework
+    libdir=`dirname "$progdir"`/lib
+fi
+if [ ! -r "$frameworkdir/$jarfile" ]
+then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+if [ "$OSTYPE" = "cygwin" ] ; then
+    jarpath=`cygpath -w  "$frameworkdir/$jarfile"`
+    progdir=`cygpath -w  "$progdir"`
+else
+    jarpath="$frameworkdir/$jarfile"
+fi
+
+# need to use "java.ext.dirs" because "-jar" causes classpath to be ignored
+# might need more memory, e.g. -Xmx128M
+exec java -ea -jar "$jarpath" "$@"
diff --git a/tools/makelabel/etc/manifest.txt b/tools/makelabel/etc/manifest.txt
new file mode 100644
index 0000000..18bf0be
--- /dev/null
+++ b/tools/makelabel/etc/manifest.txt
@@ -0,0 +1 @@
+Main-Class: com.android.inputmethod.latin.makelabel.LabelMaker
diff --git a/tools/makelabel/res/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.tmpl b/tools/makelabel/res/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.tmpl
new file mode 100644
index 0000000..0e887e4
--- /dev/null
+++ b/tools/makelabel/res/com/android/inputmethod/keyboard/internal/KeyboardLabelsSet.tmpl
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2012 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.internal;
+
+import android.content.Context;
+import android.content.res.Resources;
+
+import com.android.inputmethod.latin.R;
+
+import java.util.HashMap;
+
+/**
+ * !!!!! DO NOT EDIT THIS FILE !!!!!
+ * This file is generated by tools/makelabel.
+ */
+public final class KeyboardLabelsSet {
+    // Language to labels map.
+    private static final HashMap<String, String[]> sLocaleToLabelsMap =
+            new HashMap<String, String[]>();
+    private static final HashMap<String, Integer> sNameToIdMap = new HashMap<String, Integer>();
+
+    private String[] mLabels;
+    // Resource name to label map.
+    private HashMap<String, String> mResourceNameToLabelsMap = new HashMap<String, String>();
+
+    public void setLanguage(final String language) {
+        mLabels = sLocaleToLabelsMap.get(language);
+        if (mLabels == null) {
+            mLabels = LANGUAGE_DEFAULT;
+        }
+    }
+
+    public void loadStringResources(Context context) {
+        loadStringResourcesInternal(context, RESOURCE_NAMES, R.string.english_ime_name);
+    }
+
+    /* package for test */
+    void loadStringResourcesInternal(Context context, final String[] resourceNames,
+            int referenceId) {
+        final Resources res = context.getResources();
+        final String packageName = res.getResourcePackageName(referenceId);
+        for (final String resName : resourceNames) {
+            final int resId = res.getIdentifier(resName, "string", packageName);
+            mResourceNameToLabelsMap.put(resName, res.getString(resId));
+        }
+    }
+
+    public String getLabel(final String name) {
+        if (mResourceNameToLabelsMap.containsKey(name)) {
+            return mResourceNameToLabelsMap.get(name);
+        }
+        final Integer id = sNameToIdMap.get(name);
+        if (id == null) throw new RuntimeException("Unknown label: " + name);
+        final String label = (id < mLabels.length) ? mLabels[id] : null;
+        return (label == null) ? LANGUAGE_DEFAULT[id] : label;
+    }
+
+    private static final String[] RESOURCE_NAMES = {
+        // These labels' 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",
+        "label_previous_key",
+        // Other labels.
+        "label_to_alpha_key",
+        "label_to_symbol_key",
+        "label_to_symbol_with_microphone_key",
+        "label_pause_key",
+        "label_wait_key",
+    };
+
+    private static final String[] NAMES = {
+        /* @NAMES@ */
+    };
+
+    private static final String EMPTY = "";
+
+    /* Default labels */
+    private static final String[] LANGUAGE_DEFAULT = {
+        /* @DEFAULT_LABELS@ */
+    };
+
+    /* @LABELS@ */
+    private static final Object[] LANGUAGES_AND_LABELS = {
+        /* @LANGUAGES_AND_LABELS@ */
+    };
+
+    static {
+        int id = 0;
+        for (final String name : NAMES) {
+            sNameToIdMap.put(name, id++);
+        }
+
+        for (int i = 0; i < LANGUAGES_AND_LABELS.length; i += 2) {
+            final String language = (String)LANGUAGES_AND_LABELS[i];
+            final String[] labels = (String[])LANGUAGES_AND_LABELS[i + 1];
+            sLocaleToLabelsMap.put(language, labels);
+        }
+    }
+}
diff --git a/tools/makelabel/res/values-ar/donottranslate-more-keys.xml b/tools/makelabel/res/values-ar/donottranslate-more-keys.xml
new file mode 100644
index 0000000..402e171
--- /dev/null
+++ b/tools/makelabel/res/values-ar/donottranslate-more-keys.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+061F: "؟" ARABIC QUESTION MARK
+         U+060C: "،" ARABIC COMMA
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <!-- U+0650: "ِ" ARABIC KASRA
+         U+064E: "َ" ARABIC FATHA
+         U+064D: "ٍ" ARABIC KASRATAN
+         U+064B: "ً" ARABIC FATHATAN
+         U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+         U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+0655: "ٕ" ARABIC HAMZA BELOW
+         U+0654: "ٔ" ARABIC HAMZA ABOVE -->
+    <!-- U+064F: "ُ" ARABIC DAMMA
+         U+064C: "ٌ" ARABIC DAMMATAN
+         U+0651: "ّ" ARABIC SHADDA
+         U+0652: "ْ" ARABIC SUKUN
+         U+0653: "ٓ" ARABIC MADDAH ABOVE
+         U+0640: "ـ" ARABIC TATWEEL -->
+    <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,:,!,&#x061F;,&#x060C;,&#x061B;,&#x0650;,&#x064E;,&#x064D;,&#x064B;,&#x0656;,&#x0670;,&#x0655;,&#x0654;,&#x064F;,&#x064C;,&#x0651;,&#x0652;,&#x0653;,&#x0640;&#x0640;&#x0640;|&#x0640;,/"</string>
+    <string name="keyhintlabel_for_punctuation">&#x064B;</string>
+    <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
+    <string name="keylabel_for_symbols_1">&#x0661;</string>
+    <!-- U+0662: "٢" ARABIC-INDIC DIGIT TWO -->
+    <string name="keylabel_for_symbols_2">&#x0662;</string>
+    <!-- U+0663: "٣" ARABIC-INDIC DIGIT THREE -->
+    <string name="keylabel_for_symbols_3">&#x0663;</string>
+    <!-- U+0664: "٤" ARABIC-INDIC DIGIT FOUR -->
+    <string name="keylabel_for_symbols_4">&#x0664;</string>
+    <!-- U+0665: "٥" ARABIC-INDIC DIGIT FIVE -->
+    <string name="keylabel_for_symbols_5">&#x0665;</string>
+    <!-- U+0666: "٦" ARABIC-INDIC DIGIT SIX -->
+    <string name="keylabel_for_symbols_6">&#x0666;</string>
+    <!-- U+0667: "٧" ARABIC-INDIC DIGIT SEVEN -->
+    <string name="keylabel_for_symbols_7">&#x0667;</string>
+    <!-- U+0668: "٨" ARABIC-INDIC DIGIT EIGHT -->
+    <string name="keylabel_for_symbols_8">&#x0668;</string>
+    <!-- U+0669: "٩" ARABIC-INDIC DIGIT NINE -->
+    <string name="keylabel_for_symbols_9">&#x0669;</string>
+    <!-- U+0660: "٠" ARABIC-INDIC DIGIT ZERO -->
+    <string name="keylabel_for_symbols_0">&#x0660;</string>
+    <string name="additional_more_keys_for_symbols_1">1</string>
+    <string name="additional_more_keys_for_symbols_2">2</string>
+    <string name="additional_more_keys_for_symbols_3">3</string>
+    <string name="additional_more_keys_for_symbols_4">4</string>
+    <string name="additional_more_keys_for_symbols_5">5</string>
+    <string name="additional_more_keys_for_symbols_6">6</string>
+    <string name="additional_more_keys_for_symbols_7">7</string>
+    <string name="additional_more_keys_for_symbols_8">8</string>
+    <string name="additional_more_keys_for_symbols_9">9</string>
+    <!-- U+066B: "٫" ARABIC DECIMAL SEPARATOR
+         U+066C: "٬" ARABIC THOUSANDS SEPARATOR -->
+    <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
+    <!-- U+060C: "،" ARABIC COMMA -->
+    <string name="keylabel_for_comma">&#x060C;</string>
+    <string name="more_keys_for_comma">"\\,"</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>
+    <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="keylabel_for_dash">"."</string>
+    <string name="keyhintlabel_for_apostrophe">&#x061F;</string>
+    <string name="keyhintlabel_for_dash">&#x064B;</string>
+    <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
+    <!-- U+0651: "ّ" ARABIC SHADDA
+         U+0652: "ْ" ARABIC SUKUN
+         U+064C: "ٌ" ARABIC DAMMATAN
+         U+0653: "ٓ" ARABIC MADDAH ABOVE
+         U+064F: "ُ" ARABIC DAMMA -->
+    <!-- U+0650: "ِ" ARABIC KASRA
+         U+064E: "َ" ARABIC FATHA
+         U+064B: "ً" ARABIC FATHATAN
+         U+0640: "ـ" ARABIC TATWEEL
+         U+064D: "ٍ" ARABIC KASRATAN -->
+    <!-- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+         U+0654: "ٔ" ARABIC HAMZA ABOVE
+         U+0655: "ٕ" ARABIC HAMZA BELOW -->
+    <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
+    <string name="more_keys_for_dash">"&#x0651;,&#x0652;,&#x064C;,&#x0653;,&#x064F;,&#x0650;,&#x064E;,&#x064B;,&#x0640;&#x0640;&#x0640;|&#x0640;,&#x064D;,&#x0654;,&#x0656;,&#x0655;,&#x0670;"</string>
+    <!-- U+266A: "♪" EIGHTH NOTE -->
+    <string name="more_keys_for_bullet">&#x266A;</string>
+    <!-- U+2605: "★" BLACK STAR
+         U+066D: "٭" ARABIC FIVE POINTED STAR -->
+    <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+         U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
+    <!-- TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS -->
+    <!-- TODO: DroidSansArabic lacks the glyph of 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>
+    <!-- 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
+         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+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 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>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-be/donottranslate-more-keys.xml b/tools/makelabel/res/values-be/donottranslate-more-keys.xml
new file mode 100644
index 0000000..835553a
--- /dev/null
+++ b/tools/makelabel/res/values-be/donottranslate-more-keys.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+045E: "ў" CYRILLIC SMALL LETTER SHORT U -->
+    <string name="keylabel_for_east_slavic_row1_9">&#x045E;</string>
+    <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
+    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
+    <string name="keylabel_for_east_slavic_row3_5">&#x0456;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+</resources>
diff --git a/tools/makelabel/res/values-ca/donottranslate-more-keys.xml b/tools/makelabel/res/values-ca/donottranslate-more-keys.xml
new file mode 100644
index 0000000..baa23bf
--- /dev/null
+++ b/tools/makelabel/res/values-ca/donottranslate-more-keys.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         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">&#x00E0;,&#x00E1;,&#x00E4;,&#x00E2;,&#x00E3;,&#x00E5;,&#x0105;,&#x00E6;,&#x0101;,&#x00AA;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         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">&#x00E8;,&#x00E9;,&#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+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         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">&#x00F2;,&#x00F3;,&#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>
+    <!-- U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="more_keys_for_l">&#x0140;,&#x0142;</string>
+</resources>
diff --git a/tools/makelabel/res/values-cs/donottranslate-more-keys.xml b/tools/makelabel/res/values-cs/donottranslate-more-keys.xml
new file mode 100644
index 0000000..9af6794
--- /dev/null
+++ b/tools/makelabel/res/values-cs/donottranslate-more-keys.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         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;,&#x011B;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x00EC;,&#x012F;,&#x012B;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x016F;,&#x00FB;,&#x00FC;,&#x00F9;,&#x016B;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
+    <!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="more_keys_for_n">&#x0148;,&#x00F1;,&#x0144;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="more_keys_for_d">&#x010F;</string>
+    <!-- U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
+    <string name="more_keys_for_r">&#x0159;</string>
+    <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="more_keys_for_t">&#x0165;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
+</resources>
diff --git a/tools/makelabel/res/values-da/donottranslate-more-keys.xml b/tools/makelabel/res/values-da/donottranslate-more-keys.xml
new file mode 100644
index 0000000..acc0c53
--- /dev/null
+++ b/tools/makelabel/res/values-da/donottranslate-more-keys.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
+    <string name="more_keys_for_e">&#x00E9;,&#x00EB;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EF;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#x016B;</string>
+    <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</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+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
+    <string name="more_keys_for_d">&#x00F0;</string>
+    <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="more_keys_for_l">&#x0142;</string>
+    <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
+    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="keylabel_for_nordic_row2_11">&#x00F8;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="more_keys_for_nordic_row2_10">&#x00E4;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="more_keys_for_nordic_row2_11">&#x00F6;</string>
+</resources>
diff --git a/tools/makelabel/res/values-de/donottranslate-more-keys.xml b/tools/makelabel/res/values-de/donottranslate-more-keys.xml
new file mode 100644
index 0000000..562e574
--- /dev/null
+++ b/tools/makelabel/res/values-de/donottranslate-more-keys.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E4;,&#x00E2;,&#x00E0;,&#x00E1;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE -->
+    <string name="more_keys_for_e">&#x0117;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F6;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</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>
+</resources>
diff --git a/tools/makelabel/res/values-en/donottranslate-more-keys.xml b/tools/makelabel/res/values-en/donottranslate-more-keys.xml
new file mode 100644
index 0000000..6e43e86
--- /dev/null
+++ b/tools/makelabel/res/values-en/donottranslate-more-keys.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
+    <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0103;</string>
+    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE -->
+    <string name="more_keys_for_i">&#x00EE;,&#x00EF;,&#x00ED;,&#x012B;,&#x00EC;</string>
+    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
+    <string name="more_keys_for_o">&#x00F4;,&#x00F6;,&#x00F2;,&#x00F3;,&#x0153;,&#x00F8;&#x014D;,&#x00F5;</string>
+    <!-- U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FB;,&#x00FC;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
+    <string name="more_keys_for_s">&#x00DF;</string>
+    <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="more_keys_for_n">&#x00F1;</string>
+    <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
+    <string name="more_keys_for_c">&#x00E7;</string>
+</resources>
diff --git a/tools/makelabel/res/values-es/donottranslate-more-keys.xml b/tools/makelabel/res/values-es/donottranslate-more-keys.xml
new file mode 100644
index 0000000..f56b1d5
--- /dev/null
+++ b/tools/makelabel/res/values-es/donottranslate-more-keys.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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>
+    <!-- U+00A1: "¡" INVERTED EXCLAMATION MARK
+         U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!7,#,-,&#x00A1;,!,&#x00BF;,\\,,\?,\\%,+,;,:,/,(,),\@,&amp;,\",\'"</string>
+</resources>
diff --git a/tools/makelabel/res/values-et/donottranslate-more-keys.xml b/tools/makelabel/res/values-et/donottranslate-more-keys.xml
new file mode 100644
index 0000000..69cf654
--- /dev/null
+++ b/tools/makelabel/res/values-et/donottranslate-more-keys.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         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+00E6: "æ" LATIN SMALL LETTER AE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
+    <string name="more_keys_for_a">&#x00E4;,&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;,&#x0105;</string>
+    <!-- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
+    <string name="more_keys_for_e">&#x0113;,&#x00E8;,&#x0117;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x011B;</string>
+    <!-- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
+    <string name="more_keys_for_i">&#x012B;,&#x00EC;,&#x012F;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_o">&#x00F6;,&#x00F5;,&#x00F2;,&#x00F3;,&#x00F4;,&#x0153;,&#x0151;,&#x00F8;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+    <string name="more_keys_for_u">&#x00FC;,&#x016B;,&#x0173;,&#x00F9;,&#x00FA;,&#x00FB;,&#x016F;,&#x0171;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
+    <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="more_keys_for_d">&#x010F;</string>
+    <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+         U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+         U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
+    <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
+    <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+         U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="more_keys_for_k">&#x0137;</string>
+    <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+         U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+         U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
+    <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
+    <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row1_11">&#x00FC;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
+    <!-- U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE -->
+    <string name="more_keys_for_nordic_row2_10">&#x00F5;</string>
+</resources>
diff --git a/tools/makelabel/res/values-fa/donottranslate-more-keys.xml b/tools/makelabel/res/values-fa/donottranslate-more-keys.xml
new file mode 100644
index 0000000..1da1c18
--- /dev/null
+++ b/tools/makelabel/res/values-fa/donottranslate-more-keys.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+061F: "؟" ARABIC QUESTION MARK
+         U+060C: "،" ARABIC COMMA
+         U+061B: "؛" ARABIC SEMICOLON -->
+    <!-- U+0650: "ِ" ARABIC KASRA
+         U+064E: "َ" ARABIC FATHA
+         U+064D: "ٍ" ARABIC KASRATAN
+         U+064B: "ً" ARABIC FATHATAN
+         U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+         U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+0655: "ٕ" ARABIC HAMZA BELOW
+         U+0654: "ٔ" ARABIC HAMZA ABOVE -->
+    <!-- U+064F: "ُ" ARABIC DAMMA
+         U+064C: "ٌ" ARABIC DAMMATAN
+         U+0651: "ّ" ARABIC SHADDA
+         U+0652: "ْ" ARABIC SUKUN
+         U+0653: "ٓ" ARABIC MADDAH ABOVE
+         U+0640: "ـ" ARABIC TATWEEL -->
+    <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',-,:,!,&#x061F;,&#x060C;,&#x061B;,&#x0650;,&#x064E;,&#x064D;,&#x064B;,&#x0656;,&#x0670;,&#x0655;,&#x0654;,&#x064F;,&#x064C;,&#x0651;,&#x0652;,&#x0653;,&#x0640;&#x0640;&#x0640;|&#x0640;,/"</string>
+    <string name="keyhintlabel_for_punctuation">&#x064B;</string>
+    <!-- U+06F1: "۱" EXTENDED ARABIC-INDIC DIGIT ONE -->
+    <string name="keylabel_for_symbols_1">&#x06F1;</string>
+    <!-- U+06F2: "۲" EXTENDED ARABIC-INDIC DIGIT TWO -->
+    <string name="keylabel_for_symbols_2">&#x06F2;</string>
+    <!-- U+06F3: "۳" EXTENDED ARABIC-INDIC DIGIT THREE -->
+    <string name="keylabel_for_symbols_3">&#x06F3;</string>
+    <!-- U+06F4: "۴" EXTENDED ARABIC-INDIC DIGIT FOUR -->
+    <string name="keylabel_for_symbols_4">&#x06F4;</string>
+    <!-- U+06F5: "۵" EXTENDED ARABIC-INDIC DIGIT FIVE -->
+    <string name="keylabel_for_symbols_5">&#x06F5;</string>
+    <!-- U+06F6: "۶" EXTENDED ARABIC-INDIC DIGIT SIX -->
+    <string name="keylabel_for_symbols_6">&#x06F6;</string>
+    <!-- U+06F7: "۷" EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+    <string name="keylabel_for_symbols_7">&#x06F7;</string>
+    <!-- U+06F8: "۸" EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+    <string name="keylabel_for_symbols_8">&#x06F8;</string>
+    <!-- U+06F9: "۹" EXTENDED ARABIC-INDIC DIGIT NINE -->
+    <string name="keylabel_for_symbols_9">&#x06F9;</string>
+    <!-- U+06F0: "۰" EXTENDED ARABIC-INDIC DIGIT ZERO -->
+    <string name="keylabel_for_symbols_0">&#x06F0;</string>
+    <string name="additional_more_keys_for_symbols_1">1</string>
+    <string name="additional_more_keys_for_symbols_2">2</string>
+    <string name="additional_more_keys_for_symbols_3">3</string>
+    <string name="additional_more_keys_for_symbols_4">4</string>
+    <string name="additional_more_keys_for_symbols_5">5</string>
+    <string name="additional_more_keys_for_symbols_6">6</string>
+    <string name="additional_more_keys_for_symbols_7">7</string>
+    <string name="additional_more_keys_for_symbols_8">8</string>
+    <string name="additional_more_keys_for_symbols_9">9</string>
+    <!-- U+066B: "٫" ARABIC DECIMAL SEPARATOR
+         U+066C: "٬" ARABIC THOUSANDS SEPARATOR -->
+    <string name="additional_more_keys_for_symbols_0">0,&#x066B;,&#x066C;</string>
+    <!-- U+060C: "،" ARABIC COMMA -->
+    <string name="keylabel_for_comma">&#x060C;</string>
+    <string name="more_keys_for_comma">"\\,"</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>
+    <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_tablet_comma">"&#x060C;"</string>
+    <string name="keyhintlabel_for_tablet_comma">"!"</string>
+    <string name="more_keys_for_tablet_comma">"!,\\,"</string>
+    <string name="keyhintlabel_for_tablet_period">"&#x061F;"</string>
+    <string name="more_keys_for_tablet_period">"&#x061F;,\?"</string>
+    <string name="keyhintlabel_for_dash">&#x064B;</string>
+    <string name="more_keys_for_apostrophe">"&#x061F;,&#x061B;,!,:,-,/,\',\""</string>
+    <!-- U+0651: "ّ" ARABIC SHADDA
+         U+0652: "ْ" ARABIC SUKUN
+         U+064C: "ٌ" ARABIC DAMMATAN
+         U+0653: "ٓ" ARABIC MADDAH ABOVE
+         U+064F: "ُ" ARABIC DAMMA -->
+    <!-- U+0650: "ِ" ARABIC KASRA
+         U+064E: "َ" ARABIC FATHA
+         U+064B: "ً" ARABIC FATHATAN
+         U+0640: "ـ" ARABIC TATWEEL
+         U+064D: "ٍ" ARABIC KASRATAN -->
+    <!-- U+0670: "ٰ" ARABIC LETTER SUPERSCRIPT ALEF
+         U+0656: "ٖ" ARABIC SUBSCRIPT ALEF
+         U+0654: "ٔ" ARABIC HAMZA ABOVE
+         U+0655: "ٕ" ARABIC HAMZA BELOW -->
+    <!-- In order to make Tatweel easily distinguishable from other punctuations, we use consecutive Tatweels only for its displayed label. -->
+    <string name="more_keys_for_dash">"&#x0651;,&#x0652;,&#x064C;,&#x0653;,&#x064F;,&#x0650;,&#x064E;,&#x064B;,&#x0640;&#x0640;&#x0640;|&#x0640;,&#x064D;,&#x0654;,&#x0656;,&#x0655;,_,&#x0670;"</string>
+    <!-- U+266A: "♪" EIGHTH NOTE -->
+    <string name="more_keys_for_bullet">&#x266A;</string>
+    <!-- U+2605: "★" BLACK STAR
+         U+066D: "٭" ARABIC FIVE POINTED STAR -->
+    <string name="more_keys_for_star">&#x2605;,&#x066D;</string>
+    <!-- The all letters need to be mirrored are found at
+         http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+    <!-- U+FD3E: "﴾" ORNATE LEFT PARENTHESIS
+         U+FD3F: "﴿" ORNATE RIGHT PARENTHESIS -->
+    <!-- TODO: DroidSansArabic lacks the glyph of U+FD3E ORNATE LEFT PARENTHESIS -->
+    <!-- TODO: DroidSansArabic lacks the glyph of 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>
+    <!-- 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
+         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+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 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>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-fi/donottranslate-more-keys.xml b/tools/makelabel/res/values-fi/donottranslate-more-keys.xml
new file mode 100644
index 0000000..25b7858
--- /dev/null
+++ b/tools/makelabel/res/values-fi/donottranslate-more-keys.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E6;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F8;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
+    <string name="more_keys_for_u">&#x00FC;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
+    <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
+    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_nordic_row2_10">&#x00F8;</string>
+    <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
+</resources>
diff --git a/tools/makelabel/res/values-fr/donottranslate-more-keys.xml b/tools/makelabel/res/values-fr/donottranslate-more-keys.xml
new file mode 100644
index 0000000..7b11a18
--- /dev/null
+++ b/tools/makelabel/res/values-fr/donottranslate-more-keys.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E2;,%,&#x00E6;,&#x00E1;,&#x00E4;,&#x00E3;,&#x00E5;,&#x0101;,&#x00AA;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         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;,&#x00EA;,&#x00EB;,%,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00EE;,%,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
+    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="more_keys_for_o">&#x00F4;,&#x0153;,%,&#x00F6;,&#x00F2;,&#x00F3;,&#x00F5;,&#x00F8;,&#x014D;,&#x00BA;</string>
+    <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00F9;,&#x00FB;,%,&#x00FC;,&#x00FA;,&#x016B;</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>
+    <!-- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">%,&#x00FF;</string>
+</resources>
diff --git a/tools/makelabel/res/values-hi/donottranslate-more-keys.xml b/tools/makelabel/res/values-hi/donottranslate-more-keys.xml
new file mode 100644
index 0000000..19bcb9d
--- /dev/null
+++ b/tools/makelabel/res/values-hi/donottranslate-more-keys.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+0967: "१" DEVANAGARI DIGIT ONE -->
+    <string name="keylabel_for_symbols_1">&#x0967;</string>
+    <!-- U+0968: "२" DEVANAGARI DIGIT TWO -->
+    <string name="keylabel_for_symbols_2">&#x0968;</string>
+    <!-- U+0969: "३" DEVANAGARI DIGIT THREE -->
+    <string name="keylabel_for_symbols_3">&#x0969;</string>
+    <!-- U+096A: "४" DEVANAGARI DIGIT FOUR -->
+    <string name="keylabel_for_symbols_4">&#x096A;</string>
+    <!-- U+096B: "५" DEVANAGARI DIGIT FIVE -->
+    <string name="keylabel_for_symbols_5">&#x096B;</string>
+    <!-- U+096C: "६" DEVANAGARI DIGIT SIX -->
+    <string name="keylabel_for_symbols_6">&#x096C;</string>
+    <!-- U+096D: "७" DEVANAGARI DIGIT SEVEN -->
+    <string name="keylabel_for_symbols_7">&#x096D;</string>
+    <!-- U+096E: "८" DEVANAGARI DIGIT EIGHT -->
+    <string name="keylabel_for_symbols_8">&#x096E;</string>
+    <!-- U+096F: "९" DEVANAGARI DIGIT NINE -->
+    <string name="keylabel_for_symbols_9">&#x096F;</string>
+    <!-- U+0966: "०" DEVANAGARI DIGIT ZERO -->
+    <string name="keylabel_for_symbols_0">&#x0966;</string>
+    <string name="additional_more_keys_for_symbols_1">1</string>
+    <string name="additional_more_keys_for_symbols_2">2</string>
+    <string name="additional_more_keys_for_symbols_3">3</string>
+    <string name="additional_more_keys_for_symbols_4">4</string>
+    <string name="additional_more_keys_for_symbols_5">5</string>
+    <string name="additional_more_keys_for_symbols_6">6</string>
+    <string name="additional_more_keys_for_symbols_7">7</string>
+    <string name="additional_more_keys_for_symbols_8">8</string>
+    <string name="additional_more_keys_for_symbols_9">9</string>
+    <string name="additional_more_keys_for_symbols_0">0</string>
+</resources>
diff --git a/tools/makelabel/res/values-hr/donottranslate-more-keys.xml b/tools/makelabel/res/values-hr/donottranslate-more-keys.xml
new file mode 100644
index 0000000..9b4005d
--- /dev/null
+++ b/tools/makelabel/res/values-hr/donottranslate-more-keys.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S -->
+    <string name="more_keys_for_s">&#x0161;,&#x015B;,&#x00DF;</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+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017A;,&#x017C;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA -->
+    <string name="more_keys_for_c">&#x010D;,&#x0107;,&#x00E7;</string>
+    <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
+    <string name="more_keys_for_d">&#x0111;</string>
+</resources>
diff --git a/tools/makelabel/res/values-hu/donottranslate-more-keys.xml b/tools/makelabel/res/values-hu/donottranslate-more-keys.xml
new file mode 100644
index 0000000..4825910
--- /dev/null
+++ b/tools/makelabel/res/values-hu/donottranslate-more-keys.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         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;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EF;,&#x00EC;,&#x012F;,&#x012B;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x0151;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x0171;,&#x00FB;,&#x00F9;,&#x016B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-is/donottranslate-more-keys.xml b/tools/makelabel/res/values-is/donottranslate-more-keys.xml
new file mode 100644
index 0000000..284aae9
--- /dev/null
+++ b/tools/makelabel/res/values-is/donottranslate-more-keys.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E6;,&#x00E5;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         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;,&#x00EB;,&#x00E8;,&#x00EA;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EE;,&#x00EC;,&#x012F;,&#x012B;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#x016B;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
+    <string name="more_keys_for_d">&#x00F0;</string>
+    <!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
+    <string name="more_keys_for_t">&#x00FE;</string>
+    <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
+    <string name="keylabel_for_nordic_row1_11">&#x00F0;</string>
+    <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
+    <!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
+    <string name="keylabel_for_nordic_row2_11">&#x00FE;</string>
+</resources>
diff --git a/tools/makelabel/res/values-it/donottranslate-more-keys.xml b/tools/makelabel/res/values-it/donottranslate-more-keys.xml
new file mode 100644
index 0000000..17dd031
--- /dev/null
+++ b/tools/makelabel/res/values-it/donottranslate-more-keys.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x00AA;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         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">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x012F;,&#x012B;</string>
+    <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F6;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;,&#x00BA;</string>
+    <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x016B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-iw/donottranslate-more-keys.xml b/tools/makelabel/res/values-iw/donottranslate-more-keys.xml
new file mode 100644
index 0000000..ad209ed
--- /dev/null
+++ b/tools/makelabel/res/values-iw/donottranslate-more-keys.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+2605: "★" BLACK STAR -->
+    <string name="more_keys_for_star">&#x2605;</string>
+    <!-- U+00B1: "±" PLUS-MINUS SIGN
+         U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN -->
+    <string name="more_keys_for_plus">&#x00B1;,&#xFB29;</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
+         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+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 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>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_double_quote">&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;|&#x00BB;,&#x00BB|&#x00AB;;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;|&#x00BB;,&#x00BB;|&#x00AB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-ky/donottranslate-more-keys.xml b/tools/makelabel/res/values-ky/donottranslate-more-keys.xml
new file mode 100644
index 0000000..fd90248
--- /dev/null
+++ b/tools/makelabel/res/values-ky/donottranslate-more-keys.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
+    <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
+    <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
+    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
+    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <!-- U+04AF: "ү" CYRILLIC SMALL LETTER STRAIGHT U -->
+    <string name="more_keys_for_cyrillic_u">&#x04AF;</string>
+    <!-- U+04A3: "ң" CYRILLIC SMALL LETTER EN WITH DESCENDER -->
+    <string name="more_keys_for_cyrillic_en">&#x04A3;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
+    <!-- U+04E9: "ө" CYRILLIC SMALL LETTER BARRED O -->
+    <string name="more_keys_for_cyrillic_o">&#x04E9;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+</resources>
diff --git a/tools/makelabel/res/values-lt/donottranslate-more-keys.xml b/tools/makelabel/res/values-lt/donottranslate-more-keys.xml
new file mode 100644
index 0000000..1491d95
--- /dev/null
+++ b/tools/makelabel/res/values-lt/donottranslate-more-keys.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         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+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="more_keys_for_a">&#x0105;,&#x00E4;,&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;</string>
+    <!-- U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
+    <string name="more_keys_for_e">&#x0117;,&#x0119;,&#x0113;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x011B;</string>
+    <!-- U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
+    <string name="more_keys_for_i">&#x012F;,&#x012B;,&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_o">&#x00F6;,&#x00F5;,&#x00F2;,&#x00F3;,&#x00F4;,&#x0153;,&#x0151;,&#x00F8;</string>
+    <!-- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+    <string name="more_keys_for_u">&#x016B;,&#x0173;,&#x00FC;,&#x016B;,&#x00F9;,&#x00FA;,&#x00FB;,&#x016F;,&#x0171;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
+    <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="more_keys_for_d">&#x010F;</string>
+    <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+         U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+         U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
+    <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
+    <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+         U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="more_keys_for_k">&#x0137;</string>
+    <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+         U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+         U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
+    <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
+    <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
+</resources>
diff --git a/tools/makelabel/res/values-lv/donottranslate-more-keys.xml b/tools/makelabel/res/values-lv/donottranslate-more-keys.xml
new file mode 100644
index 0000000..d0a4448
--- /dev/null
+++ b/tools/makelabel/res/values-lv/donottranslate-more-keys.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
+    <string name="more_keys_for_a">&#x0101;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x0105;</string>
+    <!-- U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
+    <string name="more_keys_for_e">&#x0113;,&#x0117;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0119;,&#x011B;</string>
+    <!-- U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
+    <string name="more_keys_for_i">&#x012B;,&#x012F;,&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0131;</string>
+    <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F5;,&#x00F6;,&#x0153;,&#x0151;,&#x00F8;</string>
+    <!-- U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+    <string name="more_keys_for_u">&#x016B;,&#x0173;,&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x016F;,&#x0171;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
+    <!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="more_keys_for_d">&#x010F;</string>
+    <!-- U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+         U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+         U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE -->
+    <string name="more_keys_for_r">&#x0157;,&#x0159;,&#x0155;</string>
+    <!-- U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+         U+0165: "ť" LATIN SMALL LETTER T WITH CARON -->
+    <string name="more_keys_for_t">&#x0163;,&#x0165;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="more_keys_for_k">&#x0137;</string>
+    <!-- U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE
+         U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+         U+013E: "ľ" LATIN SMALL LETTER L WITH CARON -->
+    <string name="more_keys_for_l">&#x013C;,&#x0142;,&#x013A;,&#x013E;</string>
+    <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
+</resources>
diff --git a/tools/makelabel/res/values-mk/donottranslate-more-keys.xml b/tools/makelabel/res/values-mk/donottranslate-more-keys.xml
new file mode 100644
index 0000000..d0cccf6
--- /dev/null
+++ b/tools/makelabel/res/values-mk/donottranslate-more-keys.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+0455: "ѕ" CYRILLIC SMALL LETTER DZE -->
+    <string name="keylabel_for_south_slavic_row1_6">&#x0455;</string>
+    <!-- U+045C: "ќ" CYRILLIC SMALL LETTER KJE -->
+    <string name="keylabel_for_south_slavic_row2_11">&#x045C;</string>
+    <!-- U+0437: "з" CYRILLIC SMALL LETTER ZE -->
+    <string name="keylabel_for_south_slavic_row3_1">&#x0437;</string>
+    <!-- U+0453: "ѓ" CYRILLIC SMALL LETTER GJE -->
+    <string name="keylabel_for_south_slavic_row3_8">&#x0453;</string>
+    <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
+    <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
+    <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
+    <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
+         U+2019: "’" RIGHT SINGLE QUOTATION MARK
+         U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+         U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-nb/donottranslate-more-keys.xml b/tools/makelabel/res/values-nb/donottranslate-more-keys.xml
new file mode 100644
index 0000000..49e6d5f
--- /dev/null
+++ b/tools/makelabel/res/values-nb/donottranslate-more-keys.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E4;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         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;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
+    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F4;,&#x00F2;,&#x00F3;,&#x00F6;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
+    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="keylabel_for_nordic_row2_10">&#x00F8;</string>
+    <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="keylabel_for_nordic_row2_11">&#x00E6;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="more_keys_for_nordic_row2_10">&#x00F6;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="more_keys_for_nordic_row2_11">&#x00E4;</string>
+</resources>
diff --git a/tools/makelabel/res/values-nl/donottranslate-more-keys.xml b/tools/makelabel/res/values-nl/donottranslate-more-keys.xml
new file mode 100644
index 0000000..73768af
--- /dev/null
+++ b/tools/makelabel/res/values-nl/donottranslate-more-keys.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x00E2;,&#x00E0;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         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;,&#x00EB;,&#x00EA;,&#x00E8;,&#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
+         U+0133: "ij" LATIN SMALL LIGATURE IJ -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EF;,&#x00EC;,&#x00EE;,&#x012F;,&#x012B;,&#x0133;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FA;,&#x00FC;,&#x00FB;,&#x00F9;,&#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+0133: "ij" LATIN SMALL LIGATURE IJ -->
+    <string name="more_keys_for_y">&#x0133;</string>
+</resources>
diff --git a/tools/makelabel/res/values-pl/donottranslate-more-keys.xml b/tools/makelabel/res/values-pl/donottranslate-more-keys.xml
new file mode 100644
index 0000000..0f8a59b
--- /dev/null
+++ b/tools/makelabel/res/values-pl/donottranslate-more-keys.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x0105;,&#x00E1;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;</string>
+    <!-- U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON -->
+    <string name="more_keys_for_e">&#x0119;,&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0117;,&#x0113;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x00F8;,&#x014D;</string>
+    <!-- U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x015B;,&#x00DF;,&#x0161;</string>
+    <!-- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+         U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE -->
+    <string name="more_keys_for_n">&#x0144;,&#x00F1;</string>
+    <!-- U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
+    <string name="more_keys_for_c">&#x0107;,&#x00E7;,&#x010D;</string>
+    <!-- U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="more_keys_for_z">&#x017C;,&#x017A;,&#x017E;</string>
+    <!-- U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="more_keys_for_l">&#x0142;</string>
+</resources>
diff --git a/tools/makelabel/res/values-pt/donottranslate-more-keys.xml b/tools/makelabel/res/values-pt/donottranslate-more-keys.xml
new file mode 100644
index 0000000..0c9065f
--- /dev/null
+++ b/tools/makelabel/res/values-pt/donottranslate-more-keys.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E3;,&#x00E0;,&#x00E2;,&#x00E4;,&#x00E5;,&#x00E6;,&#x00AA;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         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
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
+    <string name="more_keys_for_e">&#x00E9;,&#x00EA;,&#x00E8;,&#x0119;,&#x0117;,&#x0113;,&#x00EB;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00ED;,&#x00EE;,&#x00EC;,&#x00EF;,&#x012F;,&#x012B;</string>
+    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="more_keys_for_o">&#x00F3;,&#x00F5;,&#x00F4;,&#x00F2;,&#x00F6;,&#x0153;,&#x00F8;,&#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+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x00E7;,&#x010D;,&#x0107;</string>
+</resources>
diff --git a/tools/makelabel/res/values-rm/donottranslate-more-keys.xml b/tools/makelabel/res/values-rm/donottranslate-more-keys.xml
new file mode 100644
index 0000000..aa0d7f8
--- /dev/null
+++ b/tools/makelabel/res/values-rm/donottranslate-more-keys.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         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+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F6;,&#x00F4;,&#x00F5;,&#x0153;,&#x00F8;</string>
+</resources>
diff --git a/tools/makelabel/res/values-ro/donottranslate-more-keys.xml b/tools/makelabel/res/values-ro/donottranslate-more-keys.xml
new file mode 100644
index 0000000..44613cf
--- /dev/null
+++ b/tools/makelabel/res/values-ro/donottranslate-more-keys.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
+    <string name="more_keys_for_a">&#x00E2;,&#x00E3;,&#x0103;,&#x00E0;,&#x00E1;,&#x00E4;,&#x00E6;,&#x00E5;,&#x0101;</string>
+    <!-- U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x00EE;,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
+    <!-- U+0219: "ș" LATIN SMALL LETTER S WITH COMMA BELOW
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x0219;,&#x00DF;,&#x015B;,&#x0161;</string>
+    <!-- U+021B: "ț" LATIN SMALL LETTER T WITH COMMA BELOW -->
+    <string name="more_keys_for_t">&#x021B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-ru/donottranslate-more-keys.xml b/tools/makelabel/res/values-ru/donottranslate-more-keys.xml
new file mode 100644
index 0000000..0bb5707
--- /dev/null
+++ b/tools/makelabel/res/values-ru/donottranslate-more-keys.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
+    <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
+    <!-- U+044B: "ы" CYRILLIC SMALL LETTER YERU -->
+    <string name="keylabel_for_east_slavic_row2_1">&#x044B;</string>
+    <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
+    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <!-- U+0451: "ё" CYRILLIC SMALL LETTER IO -->
+    <string name="more_keys_for_cyrillic_ye">&#x0451;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+</resources>
diff --git a/tools/makelabel/res/values-sk/donottranslate-more-keys.xml b/tools/makelabel/res/values-sk/donottranslate-more-keys.xml
new file mode 100644
index 0000000..f6e1e8d
--- /dev/null
+++ b/tools/makelabel/res/values-sk/donottranslate-more-keys.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         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+00E6: "æ" LATIN SMALL LETTER AE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK -->
+    <string name="more_keys_for_a">&#x00E1;,&#x00E4;,&#x0101;,&#x00E0;,&#x00E2;,&#x00E3;,&#x00E5;,&#x00E6;,&#x0105;</string>
+    <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK -->
+    <string name="more_keys_for_e">&#x00E9;,&#x011B;,&#x0113;,&#x0117;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
+    <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+0131: "ı" LATIN SMALL LETTER DOTLESS I -->
+    <string name="more_keys_for_i">&#x00ED;,&#x012B;,&#x012F;,&#x00EC;,&#x00EE;,&#x00EF;,&#x0131;</string>
+    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_o">&#x00F4;,&#x00F3;,&#x00F6;,&#x00F2;,&#x00F5;,&#x0153;,&#x0151;,&#x00F8;</string>
+    <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE -->
+    <string name="more_keys_for_u">&#x00FA;,&#x016F;,&#x00FC;,&#x016B;,&#x0173;,&#x00F9;,&#x00FB;,&#x0171;</string>
+    <!-- U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA -->
+    <string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
+    <!-- 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
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
+    <string name="more_keys_for_n">&#x0148;,&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x00E7;,&#x0107;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+    <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON -->
+    <string name="more_keys_for_d">&#x010F;</string>
+    <!-- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+         U+0159: "ř" LATIN SMALL LETTER R WITH CARON
+         U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA -->
+    <string name="more_keys_for_r">&#x0155;,&#x0159;,&#x0157;</string>
+    <!-- U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+         U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA -->
+    <string name="more_keys_for_t">&#x0165;,&#x0163;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE -->
+    <string name="more_keys_for_z">&#x017E;,&#x017C;,&#x017A;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA -->
+    <string name="more_keys_for_k">&#x0137;</string>
+    <!-- U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+         U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+         U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="more_keys_for_l">&#x013E;,&#x013A;,&#x013C;,&#x0142;</string>
+    <!-- U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="more_keys_for_g">&#x0123;,&#x011F;</string>
+</resources>
diff --git a/tools/makelabel/res/values-sl/donottranslate-more-keys.xml b/tools/makelabel/res/values-sl/donottranslate-more-keys.xml
new file mode 100644
index 0000000..ccff2ac
--- /dev/null
+++ b/tools/makelabel/res/values-sl/donottranslate-more-keys.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x0161;</string>
+    <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
+         U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
+    <string name="more_keys_for_c">&#x010D;,&#x0107;</string>
+    <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
+    <string name="more_keys_for_d">&#x0111;</string>
+    <!-- U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="more_keys_for_z">&#x017E;</string>
+</resources>
diff --git a/tools/makelabel/res/values-sr/donottranslate-more-keys.xml b/tools/makelabel/res/values-sr/donottranslate-more-keys.xml
new file mode 100644
index 0000000..e85d3d7
--- /dev/null
+++ b/tools/makelabel/res/values-sr/donottranslate-more-keys.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+0437: "з" CYRILLIC SMALL LETTER ZE -->
+    <string name="keylabel_for_south_slavic_row1_6">&#x0437;</string>
+    <!-- U+045B: "ћ" CYRILLIC SMALL LETTER TSHE -->
+    <string name="keylabel_for_south_slavic_row2_11">&#x045B;</string>
+    <!-- U+0455: "ѕ" CYRILLIC SMALL LETTER DZE -->
+    <string name="keylabel_for_south_slavic_row3_1">&#x0455;</string>
+    <!-- U+0452: "ђ" CYRILLIC SMALL LETTER DJE -->
+    <string name="keylabel_for_south_slavic_row3_8">&#x0452;</string>
+    <!-- U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE -->
+    <string name="more_keys_for_cyrillic_ie">&#x0450;</string>
+    <!-- U+045D: "ѝ" CYRILLIC SMALL LETTER I WITH GRAVE -->
+    <string name="more_keys_for_cyrillic_i">&#x045D;</string>
+    <!-- U+2018: "‘" LEFT SINGLE QUOTATION MARK
+         U+2019: "’" RIGHT SINGLE QUOTATION MARK
+         U+201A: "‚" SINGLE LOW-9 QUOTATION MARK
+         U+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 QUOTATION MARK -->
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201E;,&#x201C;,&#x201D;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!5,&#x201E;,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+</resources>
diff --git a/tools/makelabel/res/values-sv/donottranslate-more-keys.xml b/tools/makelabel/res/values-sv/donottranslate-more-keys.xml
new file mode 100644
index 0000000..d479191
--- /dev/null
+++ b/tools/makelabel/res/values-sv/donottranslate-more-keys.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK -->
+    <string name="more_keys_for_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;</string>
+    <!-- U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x0153;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x014D;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x0161;</string>
+    <!-- U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE -->
+    <string name="keylabel_for_nordic_row1_11">&#x00E5;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_10">&#x00F6;</string>
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS -->
+    <string name="keylabel_for_nordic_row2_11">&#x00E4;</string>
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE -->
+    <string name="more_keys_for_nordic_row2_10">&#x00F8;</string>
+    <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
+    <string name="more_keys_for_nordic_row2_11">&#x00E6;</string>
+</resources>
diff --git a/tools/makelabel/res/values-tr/donottranslate-more-keys.xml b/tools/makelabel/res/values-tr/donottranslate-more-keys.xml
new file mode 100644
index 0000000..1161811
--- /dev/null
+++ b/tools/makelabel/res/values-tr/donottranslate-more-keys.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+    <string name="more_keys_for_a">&#x00E2;</string>
+    <!-- U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON -->
+    <string name="more_keys_for_i">&#x0131;,&#x00EE;,&#x00EF;,&#x00EC;,&#x00ED;,&#x012F;,&#x012B;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
+    <string name="more_keys_for_o">&#x00F6;,&#x00F4;,&#x0153;,&#x00F2;,&#x00F3;,&#x00F5;,&#x00F8;,&#x014D;</string>
+    <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
+    <string name="more_keys_for_u">&#x00FC;,&#x00FB;,&#x00F9;,&#x00FA;,&#x016B;</string>
+    <!-- U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+         U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON -->
+    <string name="more_keys_for_s">&#x015F;,&#x00DF;,&#x015B;,&#x0161;</string>
+    <!-- U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE -->
+    <string name="more_keys_for_g">&#x011F;</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>
diff --git a/tools/makelabel/res/values-uk/donottranslate-more-keys.xml b/tools/makelabel/res/values-uk/donottranslate-more-keys.xml
new file mode 100644
index 0000000..3239704
--- /dev/null
+++ b/tools/makelabel/res/values-uk/donottranslate-more-keys.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+0449: "щ" CYRILLIC SMALL LETTER SHCHA -->
+    <string name="keylabel_for_east_slavic_row1_9">&#x0449;</string>
+    <!-- U+0456: "і" CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I -->
+    <string name="keylabel_for_east_slavic_row2_1">&#x0456;</string>
+    <!-- U+0438: "и" CYRILLIC SMALL LETTER I -->
+    <string name="keylabel_for_east_slavic_row3_5">&#x0438;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_ha">&#x044A;</string>
+    <!-- U+0457: "ї" CYRILLIC SMALL LETTER YI -->
+    <string name="more_keys_for_east_slavic_row2_1">&#x0457;</string>
+    <!-- U+044A: "ъ" CYRILLIC SMALL LETTER HARD SIGN -->
+    <string name="more_keys_for_cyrillic_soft_sign">&#x044A;</string>
+</resources>
diff --git a/tools/makelabel/res/values-vi/donottranslate-more-keys.xml b/tools/makelabel/res/values-vi/donottranslate-more-keys.xml
new file mode 100644
index 0000000..6ef1c6b
--- /dev/null
+++ b/tools/makelabel/res/values-vi/donottranslate-more-keys.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+1EA3: "ả" LATIN SMALL LETTER A WITH HOOK ABOVE
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+1EA1: "ạ" LATIN SMALL LETTER A WITH DOT BELOW
+         U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+         U+1EB1: "ằ" LATIN SMALL LETTER A WITH BREVE AND GRAVE
+         U+1EAF: "ắ" LATIN SMALL LETTER A WITH BREVE AND ACUTE
+         U+1EB3: "ẳ" LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+         U+1EB5: "ẵ" LATIN SMALL LETTER A WITH BREVE AND TILDE
+         U+1EB7: "ặ" LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+1EA7: "ầ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+         U+1EA5: "ấ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+         U+1EA9: "ẩ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+         U+1EAB: "ẫ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+         U+1EAD: "ậ" LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x1EA3;,&#x00E3;,&#x1EA1;,&#x0103;,&#x1EB1;,&#x1EAF;,&#x1EB3;,&#x1EB5;,&#x1EB7;,&#x00E2;,&#x1EA7;,&#x1EA5;,&#x1EA9;,&#x1EAB;,&#x1EAD;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+1EBB: "ẻ" LATIN SMALL LETTER E WITH HOOK ABOVE
+         U+1EBD: "ẽ" LATIN SMALL LETTER E WITH TILDE
+         U+1EB9: "ẹ" LATIN SMALL LETTER E WITH DOT BELOW
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+1EC1: "ề" LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+         U+1EBF: "ế" LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+         U+1EC3: "ể" LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+         U+1EC5: "ễ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+         U+1EC7: "ệ" LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW -->
+    <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x1EBB;,&#x1EBD;,&#x1EB9;,&#x00EA;,&#x1EC1;,&#x1EBF;,&#x1EC3;,&#x1EC5;,&#x1EC7;</string>
+    <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+1EC9: "ỉ" LATIN SMALL LETTER I WITH HOOK ABOVE
+         U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
+         U+1ECB: "ị" LATIN SMALL LETTER I WITH DOT BELOW -->
+    <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x1EC9;,&#x0129;,&#x1ECB;</string>
+    <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+1ECF: "ỏ" LATIN SMALL LETTER O WITH HOOK ABOVE
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+1ECD: "ọ" LATIN SMALL LETTER O WITH DOT BELOW
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+1ED3: "ồ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+         U+1ED1: "ố" LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+         U+1ED5: "ổ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+         U+1ED7: "ỗ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+         U+1ED9: "ộ" LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+         U+01A1: "ơ" LATIN SMALL LETTER O WITH HORN
+         U+1EDD: "ờ" LATIN SMALL LETTER O WITH HORN AND GRAVE
+         U+1EDB: "ớ" LATIN SMALL LETTER O WITH HORN AND ACUTE
+         U+1EDF: "ở" LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+         U+1EE1: "ỡ" LATIN SMALL LETTER O WITH HORN AND TILDE
+         U+1EE3: "ợ" LATIN SMALL LETTER O WITH HORN AND DOT BELOW -->
+    <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x1ECF;,&#x00F5;,&#x1ECD;,&#x00F4;,&#x1ED3;,&#x1ED1;,&#x1ED5;,&#x1ED7;,&#x1ED9;,&#x01A1;,&#x1EDD;,&#x1EDB;,&#x1EDF;,&#x1EE1;,&#x1EE3;</string>
+    <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+1EE7: "ủ" LATIN SMALL LETTER U WITH HOOK ABOVE
+         U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+         U+1EE5: "ụ" LATIN SMALL LETTER U WITH DOT BELOW
+         U+01B0: "ư" LATIN SMALL LETTER U WITH HORN
+         U+1EEB: "ừ" LATIN SMALL LETTER U WITH HORN AND GRAVE
+         U+1EE9: "ứ" LATIN SMALL LETTER U WITH HORN AND ACUTE
+         U+1EED: "ử" LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+         U+1EEF: "ữ" LATIN SMALL LETTER U WITH HORN AND TILDE
+         U+1EF1: "ự" LATIN SMALL LETTER U WITH HORN AND DOT BELOW -->
+    <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x1EE7;,&#x0169;,&#x1EE5;,&#x01B0;,&#x1EEB;,&#x1EE9;,&#x1EED;,&#x1EEF;,&#x1EF1;</string>
+    <!-- U+1EF3: "ỳ" LATIN SMALL LETTER Y WITH GRAVE
+         U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+1EF7: "ỷ" LATIN SMALL LETTER Y WITH HOOK ABOVE
+         U+1EF9: "ỹ" LATIN SMALL LETTER Y WITH TILDE
+         U+1EF5: "ỵ" LATIN SMALL LETTER Y WITH DOT BELOW -->
+    <string name="more_keys_for_y">&#x1EF3;,&#x00FD;,&#x1EF7;,&#x1EF9;,&#x1EF5;</string>
+    <!-- U+0111: "đ" LATIN SMALL LETTER D WITH STROKE -->
+    <string name="more_keys_for_d">&#x0111;</string>
+</resources>
diff --git a/tools/makelabel/res/values-zz/donottranslate-more-keys.xml b/tools/makelabel/res/values-zz/donottranslate-more-keys.xml
new file mode 100644
index 0000000..eb984a4
--- /dev/null
+++ b/tools/makelabel/res/values-zz/donottranslate-more-keys.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+         U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+         U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+         U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+         U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
+         U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
+         U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
+    <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</string>
+    <!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+         U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+         U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+         U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+         U+0113: "ē" LATIN SMALL LETTER E WITH MACRON
+         U+0115: "ĕ" LATIN SMALL LETTER E WITH BREVE
+         U+0117: "ė" LATIN SMALL LETTER E WITH DOT ABOVE
+         U+0119: "ę" LATIN SMALL LETTER E WITH OGONEK
+         U+011B: "ě" LATIN SMALL LETTER E WITH CARON -->
+    <string name="more_keys_for_e">&#x00E8;,&#x00E9;,&#x00EA;,&#x00EB;,&#x0113;,&#x0115;,&#x0117;,&#x0119;,&#x011B;</string>
+    <!-- U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+         U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+         U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+         U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+         U+0129: "ĩ" LATIN SMALL LETTER I WITH TILDE
+         U+012B: "ī" LATIN SMALL LETTER I WITH MACRON
+         U+012D: "ĭ" LATIN SMALL LETTER I WITH BREVE
+         U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+         U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+         U+0133: "ij" LATIN SMALL LIGATURE IJ -->
+    <string name="more_keys_for_i">&#x00EC;,&#x00ED;,&#x00EE;,&#x00EF;,&#x0129;,&#x012B;,&#x012D;,&#x012F;,&#x0131;,&#x0133;</string>
+    <!-- U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+         U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+         U+014F: "ŏ" LATIN SMALL LETTER O WITH BREVE
+         U+0151: "ő" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+         U+0153: "œ" LATIN SMALL LIGATURE OE
+         U+00BA: "º" MASCULINE ORDINAL INDICATOR -->
+    <string name="more_keys_for_o">&#x00F2;,&#x00F3;,&#x00F4;,&#x00F5;,&#x00F6;,&#x00F8;,&#x014D;,&#x014F;,&#x0151;,&#x0153;,&#x00BA;</string>
+    <!-- U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+         U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+         U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+         U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+         U+0169: "ũ" LATIN SMALL LETTER U WITH TILDE
+         U+016B: "ū" LATIN SMALL LETTER U WITH MACRON
+         U+016D: "ŭ" LATIN SMALL LETTER U WITH BREVE
+         U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+         U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+         U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK -->
+    <string name="more_keys_for_u">&#x00F9;,&#x00FA;,&#x00FB;,&#x00FC;,&#x0169;,&#x016B;,&#x016D;,&#x016F;,&#x0171;,&#x0173;</string>
+    <!-- U+00DF: "ß" LATIN SMALL LETTER SHARP S
+         U+015B: "ś" LATIN SMALL LETTER S WITH ACUTE
+         U+015D: "ŝ" LATIN SMALL LETTER S WITH CIRCUMFLEX
+         U+015F: "ş" LATIN SMALL LETTER S WITH CEDILLA
+         U+0161: "š" LATIN SMALL LETTER S WITH CARON
+         U+017F: "ſ" LATIN SMALL LETTER LONG S -->
+    <string name="more_keys_for_s">&#x00DF;,&#x015B;,&#x015D;,&#x015F;,&#x0161;,&#x017F;</string>
+    <!-- U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+         U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
+         U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+         U+0148: "ň" LATIN SMALL LETTER N WITH CARON
+         U+0149: "ʼn" LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+         U+014B: "ŋ" LATIN SMALL LETTER ENG -->
+    <string name="more_keys_for_n">&#x00F1;,&#x0144;,&#x0146;,&#x0148;,&#x0149;,&#x014B;</string>
+    <!-- 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 -->
+    <string name="more_keys_for_c">&#x00E7;,&#x0107;,&#x0109;,&#x010B;,&#x010D;</string>
+    <!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+         U+0177: "ŷ" LATIN SMALL LETTER Y WITH CIRCUMFLEX
+         U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+         U+0133: "ij" LATIN SMALL LIGATURE IJ -->
+    <string name="more_keys_for_y">&#x00FD;,&#x0177;,&#x00FF;,&#x0133;</string>
+    <!-- U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+         U+0111: "đ" LATIN SMALL LETTER D WITH STROKE
+         U+00F0: "ð" LATIN SMALL LETTER ETH -->
+    <string name="more_keys_for_d">&#x010F;,&#x0111;,&#x00F0;</string>
+    <!-- U+0155: "ŕ" LATIN SMALL LETTER R WITH ACUTE
+         U+0157: "ŗ" LATIN SMALL LETTER R WITH CEDILLA
+         U+0159: "ř" LATIN SMALL LETTER R WITH CARON -->
+    <string name="more_keys_for_r">&#x0155;,&#x0157;,&#x0159;</string>
+    <!-- U+00FE: "þ" LATIN SMALL LETTER THORN
+         U+0163: "ţ" LATIN SMALL LETTER T WITH CEDILLA
+         U+0165: "ť" LATIN SMALL LETTER T WITH CARON
+         U+0167: "ŧ" LATIN SMALL LETTER T WITH STROKE -->
+    <string name="more_keys_for_t">&#x00FE;,&#x0163;,&#x0165;,&#x0167;</string>
+    <!-- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+         U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+         U+017E: "ž" LATIN SMALL LETTER Z WITH CARON -->
+    <string name="more_keys_for_z">&#x017A;,&#x017C;,&#x017E;</string>
+    <!-- U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
+         U+0138: "ĸ" LATIN SMALL LETTER KRA -->
+    <string name="more_keys_for_k">&#x0137;,&#x0138;</string>
+    <!-- U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+         U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+         U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+         U+0140: "ŀ" LATIN SMALL LETTER L WITH MIDDLE DOT
+         U+0142: "ł" LATIN SMALL LETTER L WITH STROKE -->
+    <string name="more_keys_for_l">&#x013A;,&#x013C;,&#x013E;,&#x0140;,&#x0142;</string>
+    <!-- U+011D: "ĝ" LATIN SMALL LETTER G WITH CIRCUMFLEX
+         U+011F: "ğ" LATIN SMALL LETTER G WITH BREVE
+         U+0121: "ġ" LATIN SMALL LETTER G WITH DOT ABOVE
+         U+0123: "ģ" LATIN SMALL LETTER G WITH CEDILLA -->
+    <string name="more_keys_for_g">&#x011D;,&#x011F;,&#x0121;,&#x0123;</string>
+    <!-- U+0125: "ĥ" LATIN SMALL LETTER H WITH CIRCUMFLEX -->
+    <string name="more_keys_for_h">&#x0125;</string>
+    <!-- U+0135: "ĵ" LATIN SMALL LETTER J WITH CIRCUMFLEX -->
+    <string name="more_keys_for_j">&#x0135;</string>
+    <!-- U+0175: "ŵ" LATIN SMALL LETTER W WITH CIRCUMFLEX -->
+    <string name="more_keys_for_w">&#x0175;</string>
+</resources>
diff --git a/tools/makelabel/res/values/donottranslate-more-keys.xml b/tools/makelabel/res/values/donottranslate-more-keys.xml
new file mode 100644
index 0000000..7878757
--- /dev/null
+++ b/tools/makelabel/res/values/donottranslate-more-keys.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, 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">
+    <string name="more_keys_for_a"></string>
+    <string name="more_keys_for_e"></string>
+    <string name="more_keys_for_i"></string>
+    <string name="more_keys_for_o"></string>
+    <string name="more_keys_for_u"></string>
+    <string name="more_keys_for_s"></string>
+    <string name="more_keys_for_n"></string>
+    <string name="more_keys_for_c"></string>
+    <string name="more_keys_for_y"></string>
+    <string name="more_keys_for_d"></string>
+    <string name="more_keys_for_r"></string>
+    <string name="more_keys_for_t"></string>
+    <string name="more_keys_for_z"></string>
+    <string name="more_keys_for_k"></string>
+    <string name="more_keys_for_l"></string>
+    <string name="more_keys_for_g"></string>
+    <string name="more_keys_for_v"></string>
+    <string name="more_keys_for_h"></string>
+    <string name="more_keys_for_j"></string>
+    <string name="more_keys_for_w"></string>
+    <string name="keylabel_for_nordic_row1_11"></string>
+    <string name="keylabel_for_nordic_row2_10"></string>
+    <string name="keylabel_for_nordic_row2_11"></string>
+    <string name="more_keys_for_nordic_row2_10"></string>
+    <string name="more_keys_for_nordic_row2_11"></string>
+    <string name="keylabel_for_east_slavic_row1_9"></string>
+    <string name="keylabel_for_east_slavic_row2_1"></string>
+    <string name="keylabel_for_east_slavic_row3_5"></string>
+    <string name="more_keys_for_cyrillic_u"></string>
+    <string name="more_keys_for_cyrillic_ye"></string>
+    <string name="more_keys_for_cyrillic_en"></string>
+    <string name="more_keys_for_cyrillic_ha"></string>
+    <string name="more_keys_for_east_slavic_row2_1"></string>
+    <string name="more_keys_for_cyrillic_o"></string>
+    <string name="more_keys_for_cyrillic_soft_sign"></string>
+    <string name="keylabel_for_south_slavic_row1_6"></string>
+    <string name="keylabel_for_south_slavic_row2_11"></string>
+    <string name="keylabel_for_south_slavic_row3_1"></string>
+    <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="more_keys_for_single_quote">!fixedColumnOrder!4,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;</string> -->
+    <string name="more_keys_for_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;</string>
+    <!-- TODO: Neither DroidSans nor Roboto have the glyph for U+201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK. -->
+    <!-- <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!6,&#x201C;,&#x201D;,&#x201E;,&#x201F;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string> -->
+    <string name="more_keys_for_tablet_double_quote">!fixedColumnOrder!4,&#x201C;,&#x201D;,&#x00AB;,&#x00BB;,&#x2018;,&#x2019;,&#x201A;,&#x201B;</string>
+    <!-- U+00A2: "¢" CENT SIGN
+         U+00A3: "£" POUND SIGN
+         U+20AC: "€" EURO SIGN
+         U+00A5: "¥" YEN SIGN
+         U+20B1: "₱" PESO SIGN -->
+    <string name="more_keys_for_currency_dollar">&#x00A2;,&#x00A3;,&#x20AC;,&#x00A5;,&#x20B1;</string>
+    <string name="more_keys_for_currency_euro">&#x00A2;,&#x00A3;,$,&#x00A5;,&#x20B1;</string>
+    <string name="more_keys_for_currency_pound">&#x00A2;,$,&#x20AC;,&#x00A5;,&#x20B1;</string>
+    <string name="more_keys_for_currency_general">&#x00A2;,$,&#x20AC;,&#x00A3;,&#x00A5;,&#x20B1;</string>
+    <string name="more_keys_for_smiley">"!fixedColumnOrder!5,!hasLabels!,=-O|=-O ,:-P|:-P ,;-)|;-) ,:-(|:-( ,:-)|:-) ,:-!|:-! ,:-$|:-$ ,B-)|B-) ,:O|:O ,:-*|:-* ,:-D|:-D ,:\'(|:\'( ,:-\\\\|:-\\\\ ,O:-)|O:-) ,:-[|:-[ "</string>
+    <string name="more_keys_for_punctuation">"!fixedColumnOrder!8,\",\',#,-,:,!,\\,,\?,\@,&amp;,\\%,+,;,/,(,)"</string>
+    <string name="keyhintlabel_for_punctuation"></string>
+    <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>
+    <string name="keylabel_for_symbols_1">1</string>
+    <string name="keylabel_for_symbols_2">2</string>
+    <string name="keylabel_for_symbols_3">3</string>
+    <string name="keylabel_for_symbols_4">4</string>
+    <string name="keylabel_for_symbols_5">5</string>
+    <string name="keylabel_for_symbols_6">6</string>
+    <string name="keylabel_for_symbols_7">7</string>
+    <string name="keylabel_for_symbols_8">8</string>
+    <string name="keylabel_for_symbols_9">9</string>
+    <string name="keylabel_for_symbols_0">0</string>
+    <string name="additional_more_keys_for_symbols_1"></string>
+    <string name="additional_more_keys_for_symbols_2"></string>
+    <string name="additional_more_keys_for_symbols_3"></string>
+    <string name="additional_more_keys_for_symbols_4"></string>
+    <string name="additional_more_keys_for_symbols_5"></string>
+    <string name="additional_more_keys_for_symbols_6"></string>
+    <string name="additional_more_keys_for_symbols_7"></string>
+    <string name="additional_more_keys_for_symbols_8"></string>
+    <string name="additional_more_keys_for_symbols_9"></string>
+    <string name="additional_more_keys_for_symbols_0"></string>
+    <!-- U+00B9: "¹" SUPERSCRIPT ONE
+         U+00BD: "½" VULGAR FRACTION ONE HALF
+         U+2153: "⅓" VULGAR FRACTION ONE THIRD
+         U+00BC: "¼" VULGAR FRACTION ONE QUARTER
+         U+215B: "⅛" VULGAR FRACTION ONE EIGHTH -->
+    <string name="more_keys_for_symbols_1">&#x00B9;,&#x00BD;,&#x2153;,&#x00BC;,&#x215B;</string>
+    <!-- U+00B2: "²" SUPERSCRIPT TWO
+         U+2154: "⅔" VULGAR FRACTION TWO THIRDS -->
+    <string name="more_keys_for_symbols_2">&#x00B2;,&#x2154;</string>
+    <!-- U+00B3: "³" SUPERSCRIPT THREE
+         U+00BE: "¾" VULGAR FRACTION THREE QUARTERS
+         U+215C: "⅜" VULGAR FRACTION THREE EIGHTHS -->
+    <string name="more_keys_for_symbols_3">&#x00B3;,&#x00BE;,&#x215C;</string>
+    <!-- U+2074: "⁴" SUPERSCRIPT FOUR -->
+    <string name="more_keys_for_symbols_4">&#x2074;</string>
+    <!-- U+215D: "⅝" VULGAR FRACTION FIVE EIGHTHS -->
+    <string name="more_keys_for_symbols_5">&#x215D;</string>
+    <string name="more_keys_for_symbols_6"></string>
+    <!-- U+215E: "⅞" VULGAR FRACTION SEVEN EIGHTHS -->
+    <string name="more_keys_for_symbols_7">&#x215E;</string>
+    <string name="more_keys_for_symbols_8"></string>
+    <string name="more_keys_for_symbols_9"></string>
+    <!-- U+207F: "ⁿ" SUPERSCRIPT LATIN SMALL LETTER N
+         U+2205: "∅" EMPTY SET -->
+    <string name="more_keys_for_symbols_0">&#x207F;,&#x2205;</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/settingsKey|!code/key_settings</string>
+    <string name="keylabel_for_comma">,</string>
+    <string name="more_keys_for_comma"></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="keylabel_for_symbols_question">\?</string>
+    <string name="keylabel_for_symbols_semicolon">;</string>
+    <string name="keylabel_for_symbols_percent">%</string>
+    <!-- U+00BF: "¿" INVERTED QUESTION MARK -->
+    <string name="more_keys_for_symbols_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_tablet_period">\?</string>
+    <string name="more_keys_for_tablet_period">\?</string>
+    <string name="keylabel_for_apostrophe">\'</string>
+    <string name="keylabel_for_dash">-</string>
+    <string name="keyhintlabel_for_apostrophe">\"</string>
+    <string name="keyhintlabel_for_dash">_</string>
+    <string name="more_keys_for_apostrophe">\"</string>
+    <string name="more_keys_for_dash">_</string>
+    <!-- U+266A: "♪" EIGHTH NOTE
+         U+2665: "♥" BLACK HEART SUIT
+         U+2660: "♠" BLACK SPADE SUIT
+         U+2666: "♦" BLACK DIAMOND SUIT
+         U+2663: "♣" BLACK CLUB SUIT -->
+    <string name="more_keys_for_bullet">&#x266A;,&#x2665;,&#x2660;,&#x2666;,&#x2663;</string>
+    <!-- U+2020: "†" DAGGER
+         U+2021: "‡" DOUBLE DAGGER
+         U+2605: "★" BLACK STAR -->
+    <string name="more_keys_for_star">&#x2020;,&#x2021;,&#x2605;</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
+         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+201B: "‛" SINGLE HIGH-REVERSED-9 QUOTATION MARK
+         U+201C: "“" LEFT DOUBLE QUOTATION MARK
+         U+201D: "”" RIGHT DOUBLE QUOTATION MARK
+         U+201E: "„" DOUBLE LOW-9 QUOTATION MARK
+         U+201F: "‟" DOUBLE HIGH-REVERSED-9 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>
+    <!-- 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">~ \\ {</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! -->
+    <!-- U+FF0A: "*" FULLWIDTH ASTERISK
+         U+FF03: "#" FULLWIDTH NUMBER SIGN -->
+    <string name="label_to_phone_symbols_key">&#xFF0A;&#xFF03;</string>
+    <!-- Key label for "ante meridiem" -->
+    <string name="label_time_am">"AM"</string>
+    <!-- Key label for "post meridiem" -->
+    <string name="label_time_pm">"PM"</string>
+</resources>
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/ArrayInitializerFormatter.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/ArrayInitializerFormatter.java
new file mode 100644
index 0000000..0cf2991
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/ArrayInitializerFormatter.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+import java.io.PrintStream;
+
+public class ArrayInitializerFormatter {
+    private final PrintStream mOut;
+    private final int mMaxWidth;
+    private final String mIndent;
+
+    private int mCurrentIndex = 0;
+    private String mFixedElement;
+    private final StringBuilder mBuffer = new StringBuilder();
+    private int mBufferedLen;
+    private int mBufferedIndex = Integer.MIN_VALUE;
+
+    public ArrayInitializerFormatter(PrintStream out, int width, String indent) {
+        mOut = out;
+        mMaxWidth = width - indent.length();
+        mIndent = indent;
+    }
+
+    public void flush() {
+        if (mBuffer.length() == 0) {
+            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]);
+        } else {
+            mOut.format("%s/* %d~ */\n"
+                    + "%s%s\n"
+                    + "%s/* ~%d */\n", mIndent, mBufferedIndex,
+                    mIndent, mBuffer,
+                    mIndent, lastIndex);
+        }
+        mBuffer.setLength(0);
+        mBufferedLen = 0;
+    }
+
+    public void outCommentLines(String lines) {
+        flush();
+        mOut.print(lines);
+        mFixedElement = null;
+    }
+
+    public void outElement(String element) {
+        if (!element.equals(mFixedElement)) {
+            flush();
+            mBufferedIndex = mCurrentIndex;
+        }
+        final int nextLen = mBufferedLen + " ".length() + element.length();
+        if (mBufferedLen != 0 && nextLen < mMaxWidth) {
+            mBuffer.append(' ');
+            mBuffer.append(element);
+            mBufferedLen = nextLen;
+        } else {
+            if (mBufferedLen != 0) {
+                mBuffer.append('\n');
+                mBuffer.append(mIndent);
+            }
+            mBuffer.append(element);
+            mBufferedLen = element.length();
+        }
+        mCurrentIndex++;
+        mFixedElement = element;
+    }
+}
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/JarUtils.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/JarUtils.java
new file mode 100644
index 0000000..b24b2ca
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/JarUtils.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+public class JarUtils {
+    private static final String MANIFEST = "META-INF/MANIFEST.MF";
+
+    private JarUtils() {
+        // This utility class is not publicly instantiable.
+    }
+
+    public static JarFile getJarFile(final ClassLoader loader) {
+        final URL resUrl = loader.getResource(MANIFEST);
+        if (!resUrl.getProtocol().equals("jar")) {
+            throw new RuntimeException("Should run as jar");
+        }
+        final String path = resUrl.getPath();
+        if (!path.startsWith("file:")) {
+            throw new RuntimeException("Unknown jar path: " + path);
+        }
+        final String jarPath = path.substring("file:".length(), path.indexOf('!'));
+        try {
+            return new JarFile(URLDecoder.decode(jarPath, "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+        } catch (IOException e) {
+        }
+        return null;
+    }
+
+    public static InputStream openResource(final String name) {
+        return JarUtils.class.getResourceAsStream("/" + name);
+    }
+
+    public interface JarFilter {
+        public boolean accept(String dirName, String name);
+    }
+
+    public static ArrayList<String> getNameListing(final JarFile jar, final JarFilter filter) {
+        final ArrayList<String> result = new ArrayList<String>();
+        final Enumeration<JarEntry> entries = jar.entries();
+        while (entries.hasMoreElements()) {
+            final JarEntry entry = entries.nextElement();
+            final String path = entry.getName();
+            final int pos = path.lastIndexOf('/');
+            final String dirName = (pos >= 0) ? path.substring(0, pos) : "";
+            final String name = (pos >= 0) ? path.substring(pos + 1) : path;
+            if (filter.accept(dirName, name)) {
+                result.add(path);
+            }
+        }
+        return result;
+    }
+
+    public static ArrayList<String> getNameListing(final JarFile jar, final String filterName) {
+        return getNameListing(jar, new JarFilter() {
+            @Override
+            public boolean accept(final String dirName, final String name) {
+                return name.equals(filterName);
+            }
+        });
+    }
+}
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/LabelMaker.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/LabelMaker.java
new file mode 100644
index 0000000..e02f802
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/LabelMaker.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.NoSuchElementException;
+import java.util.jar.JarFile;
+
+public class LabelMaker {
+    static class Options {
+        private static final String OPTION_JAVA = "-java";
+
+        public final String mJava;
+
+        public static void usage(String message) {
+            if (message != null) {
+                System.err.println(message);
+            }
+            System.err.println("usage: makelabel " + OPTION_JAVA + " <java_output_dir>");
+            System.exit(1);
+        }
+
+        public Options(final String[] argsArray) {
+            final LinkedList<String> args = new LinkedList<String>(Arrays.asList(argsArray));
+            String arg = null;
+            String java = null;
+            try {
+                while (!args.isEmpty()) {
+                    arg = args.removeFirst();
+                    if (arg.equals(OPTION_JAVA)) {
+                        java = args.removeFirst();
+                    } else {
+                        usage("Unknown option: " + arg);
+                    }
+                }
+            } catch (NoSuchElementException e) {
+                usage("Option " + arg + " needs argument");
+            }
+
+            mJava = java;
+        }
+    }
+
+    public static void main(final String[] args) {
+        final Options options = new Options(args);
+        final JarFile jar = JarUtils.getJarFile(LabelMaker.class.getClassLoader());
+        final MoreKeysResources resources = new MoreKeysResources(jar);
+        resources.writeToJava(options.mJava);
+    }
+}
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/MoreKeysResources.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/MoreKeysResources.java
new file mode 100644
index 0000000..1dfb853
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/MoreKeysResources.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.jar.JarFile;
+
+public class MoreKeysResources {
+    private static final String LABEL_RESOURCE_NAME = "donottranslate-more-keys.xml";
+
+    private static final String JAVA_TEMPLATE = "KeyboardLabelsSet.tmpl";
+    private static final String MARK_NAMES = "@NAMES@";
+    private static final String MARK_DEFAULT_LABELS = "@DEFAULT_LABELS@";
+    private static final String MARK_LABELS = "@LABELS@";
+    private static final String MARK_LANGUAGES_AND_LABELS = "@LANGUAGES_AND_LABELS@";
+    private static final String DEFAUT_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";
+    private static final String NO_LANGUAGE_DISPLAY_NAME = "No language";
+
+    private final JarFile mJar;
+    // 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>();
+
+    public MoreKeysResources(final JarFile jar) {
+        mJar = jar;
+        final ArrayList<String> resources = JarUtils.getNameListing(jar, LABEL_RESOURCE_NAME);
+        for (final String name : resources) {
+            final String dirName = name.substring(0, name.lastIndexOf('/'));
+            final int pos = dirName.lastIndexOf('/');
+            final String parentName = (pos >= 0) ? dirName.substring(pos + 1) : dirName;
+            final String language = getLanguageFromResDir(parentName);
+            final InputStream stream = JarUtils.openResource(name);
+            try {
+                mResourcesMap.put(language, new StringResourceMap(stream));
+            } finally {
+                close(stream);
+            }
+        }
+    }
+
+    private static String getLanguageFromResDir(final String dirName) {
+        final int languagePos = dirName.indexOf('-');
+        if (languagePos < 0) {
+            // Default resource.
+            return DEFAUT_LANGUAGE_NAME;
+        }
+        final String language = dirName.substring(languagePos + 1);
+        final int countryPos = language.indexOf("-r");
+        if (countryPos < 0) {
+            return language;
+        }
+        return language.replace("-r", "_");
+    }
+
+    public void writeToJava(final String outDir) {
+        final ArrayList<String> list = JarUtils.getNameListing(mJar, JAVA_TEMPLATE);
+        if (list.isEmpty())
+            throw new RuntimeException("Can't find java template " + JAVA_TEMPLATE);
+        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;
+        LineNumberReader lnr = null;
+        try {
+            if (outDir == null) {
+                ps = System.out;
+            } else {
+                final File outPackage = new File(outDir, javaPackage);
+                final File outputFile = new File(outPackage,
+                        JAVA_TEMPLATE.replace(".tmpl", ".java"));
+                outPackage.mkdirs();
+                ps = new PrintStream(outputFile);
+            }
+            lnr = new LineNumberReader(new InputStreamReader(JarUtils.openResource(template)));
+            inflateTemplate(lnr, ps);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+            close(lnr);
+            close(ps);
+        }
+    }
+
+    private void inflateTemplate(final LineNumberReader in, final PrintStream out)
+            throws IOException {
+        String line;
+        while ((line = in.readLine()) != null) {
+            if (line.contains(MARK_NAMES)) {
+                dumpNames(out);
+            } else if (line.contains(MARK_DEFAULT_LABELS)) {
+                dumpDefaultLabels(out);
+            } else if (line.contains(MARK_LABELS)) {
+                dumpLabels(out);
+            } else if (line.contains(MARK_LANGUAGES_AND_LABELS)) {
+                dumpLanguageMap(out);
+            } else {
+                out.println(line);
+            }
+        }
+    }
+
+    private void dumpNames(final PrintStream out) {
+        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_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++;
+        }
+    }
+
+    private void dumpDefaultLabels(final PrintStream out) {
+        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_LANGUAGE_NAME);
+        dumpLabelsInternal(out, defaultResMap, defaultResMap);
+    }
+
+    private void dumpLabels(final PrintStream out) {
+        final StringResourceMap defaultResMap = mResourcesMap.get(DEFAUT_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)) {
+                continue;
+            }
+            out.format("    /* Language %s: %s */\n", language, getLanguageDisplayName(language));
+            out.format("    private static final String[] " + ARRAY_NAME_FOR_LANGUAGE + " = {\n",
+                    language);
+            final StringResourceMap resMap = mResourcesMap.get(language);
+            dumpLabelsInternal(out, resMap, defaultResMap);
+            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) {
+            out.format("        \"%s\", " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n",
+                    language, language, getLanguageDisplayName(language));
+        }
+    }
+
+    private static String getLanguageDisplayName(final String language) {
+        if (language.equals(NO_LANGUAGE_CODE)) {
+            return NO_LANGUAGE_DISPLAY_NAME;
+        } else {
+            return new Locale(language).getDisplayLanguage();
+        }
+    }
+
+    private static void dumpLabelsInternal(final PrintStream out, final StringResourceMap resMap,
+            final StringResourceMap defaultResMap) {
+        final ArrayInitializerFormatter formatter =
+                new ArrayInitializerFormatter(out, 100, "        ");
+        boolean successiveNull = false;
+        for (final StringResource defaultRes : defaultResMap.getResources()) {
+            if (resMap.contains(defaultRes.mName)) {
+                final StringResource res = resMap.get(defaultRes.mName);
+                if (res.mComment != null) {
+                    formatter.outCommentLines(addPrefix("        // ", res. mComment));
+                }
+                final String escaped = escapeNonAscii(res.mValue);
+                if (escaped.length() == 0) {
+                    formatter.outElement(EMPTY_STRING_VAR + ",");
+                } else {
+                    formatter.outElement(String.format("\"%s\",", escaped));
+                }
+                successiveNull = false;
+            } else {
+                formatter.outElement("null,");
+                successiveNull = true;
+            }
+        }
+        if (!successiveNull) {
+            formatter.flush();
+        }
+    }
+
+    private static String addPrefix(final String prefix, final String lines) {
+        final StringBuilder sb = new StringBuilder();
+        for (final String line : lines.split("\n")) {
+            sb.append(prefix + line.trim() + "\n");
+        }
+        return sb.toString();
+    }
+
+    private static String escapeNonAscii(final String text) {
+        final StringBuilder sb = new StringBuilder();
+        final int length = text.length();
+        for (int i = 0; i < length; i++) {
+            final char c = text.charAt(i);
+            if (c >= ' ' && c < 0x7f) {
+                sb.append(c);
+            } else {
+                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/", "!label/");
+        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;
+    }
+
+    private static void close(Closeable stream) {
+        try {
+            if (stream != null) {
+                stream.close();
+            }
+        } catch (IOException e) {
+        }
+    }
+}
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResource.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResource.java
new file mode 100644
index 0000000..793483c
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResource.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+public class StringResource {
+    public final String mName;
+    public final String mValue;
+    public final String mComment;
+
+    public StringResource(final String name, final String value, final String comment) {
+        mName = name;
+        mValue = value;
+        mComment = comment;
+    }
+}
diff --git a/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResourceMap.java b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResourceMap.java
new file mode 100644
index 0000000..afb1aa7
--- /dev/null
+++ b/tools/makelabel/src/com/android/inputmethod/latin/makelabel/StringResourceMap.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2012 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.latin.makelabel;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.DefaultHandler2;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+public class StringResourceMap {
+    // String resource list.
+    private final List<StringResource> mResources;
+    // Name to string resource map.
+    private final Map<String, StringResource> mResourcesMap;
+
+    public StringResourceMap(final InputStream is) {
+        final StringResourceHandler handler = new StringResourceHandler();
+        final SAXParserFactory factory = SAXParserFactory.newInstance();
+        factory.setNamespaceAware(true);
+        try {
+            final SAXParser parser = factory.newSAXParser();
+            // In order to get comment tag.
+            parser.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
+            parser.parse(is, handler);
+        } catch (ParserConfigurationException e) {
+        } catch (SAXException e) {
+            throw new RuntimeException(e.getMessage());
+        } catch (IOException e) {
+        }
+
+        mResources = Collections.unmodifiableList(handler.mResources);
+        final HashMap<String,StringResource> map = new HashMap<String,StringResource>();
+        for (final StringResource res : mResources) {
+            map.put(res.mName, res);
+        }
+        mResourcesMap = map;
+    }
+
+    public List<StringResource> getResources() {
+        return mResources;
+    }
+
+    public boolean contains(final String name) {
+        return mResourcesMap.containsKey(name);
+    }
+
+    public StringResource get(final String name) {
+        return mResourcesMap.get(name);
+    }
+
+    static class StringResourceHandler extends DefaultHandler2 {
+        private static final String TAG_RESOURCES = "resources";
+        private static final String TAG_STRING = "string";
+        private static final String ATTR_NAME = "name";
+
+        final ArrayList<StringResource> mResources = new ArrayList<StringResource>();
+
+        private String mName;
+        private final StringBuilder mValue = new StringBuilder();
+        private final StringBuilder mComment = new StringBuilder();
+
+        private void init() {
+            mName = null;
+            mComment.setLength(0);
+        }
+
+        @Override
+        public void comment(char[] ch, int start, int length) {
+            mComment.append(ch, start, length);
+        }
+
+        @Override
+        public void startElement(String uri, String localName, String qName, Attributes attr) {
+            if (TAG_RESOURCES.equals(localName)) {
+                init();
+            } else if (TAG_STRING.equals(localName)) {
+                mName = attr.getValue(ATTR_NAME);
+                mValue.setLength(0);
+            }
+        }
+
+        @Override
+        public void characters(char[] ch, int start, int length) {
+            mValue.append(ch, start, length);
+        }
+
+        @Override
+        public void endElement(String uri, String localName, String qName) throws SAXException {
+            if (TAG_STRING.equals(localName)) {
+                if (mName == null)
+                    throw new SAXException(TAG_STRING + " doesn't have name");
+                final String comment = mComment.length() > 0 ? mComment.toString() : null;
+                String value = mValue.toString();
+                if (value.startsWith("\"") && value.endsWith("\"")) {
+                    // Trim surroundings double quote.
+                    value = value.substring(1, value.length() - 1);
+                }
+                mResources.add(new StringResource(mName, value, comment));
+                init();
+            }
+        }
+    }
+}